pb的bitmap用法

合集下载

PB基础知识整理版

PB基础知识整理版

PB基础知识.数据库的事务管理在数据库中,所谓事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。

为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元:当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退到开始状态。

对事务的操作是这样进行的:先定义开始一个事务,然后对数据作修改操作,这时如果提交(COMMIT),这些修改就永久地保存下来,如果回退(ROLLBACK),数据库管理系统将放弃您所作的所有修改而回到开始事务时的状态。

此外有些数据库支持事务的"存储点(savepoint)这一概念:即在一个事务进程中任意一点您都可以进行当前状态的存储,回退时只是回到你所设定的存储点,而不必退回全部的事务。

如果您的事务可以分成几组对数据库的修改,那就可以设置多个存储点,根据需要您可以回退到任意一个存储点,而不使所有事务的修改数据全部丢失。

正确地管理事务可以保证数据的完整性,当您所做的工作全部完成和得到确认之前,没有任何数据物理地写进数据库。

让我们来看这样一个实例,我们有这样一个银行应用系统,前台使用者作出将储户甲的一百元存款划归储户乙帐下的操作;在后台的数据库中,这两个客户的记录分储在两张表中,当使用者在屏幕上作出如上操作时,在后台需要对两张表进行修改。

如果在数据库中对甲用户存款余款作减去一百元修改后,对乙用户加一百元的操作修改却失败时,前一张表也必须回到修改前的状态,否则数据库的内容不统一,甲储户白白损失一百元,信息必然是不正确的。

因此进行事务管理是必须的。

传统地,我们认为一个事务包括了对一个或多个表的修改,而随着分布式数据库和数据仓库的发展,事务可能包括了对一个或多个数据库的修改。

在上例中甲乙两用户就可能是异地用户,信息分储在不同地域的不同数据库中,上述的一个事务就涉及到了对不同数据库的操作。

PowerBuilder中的事务管理作为数据库的前台开发工具Power Builder支持事务管理的操作。

pb中数据窗口的应用

pb中数据窗口的应用

Pb中数据窗口的应用在通常的Server/Client方式MIS开发中,总是有没完没了的报表需要制作,调试报表花费的时间也是最多而且乏味,还常常不能满足客户的要求。

要是能够让用户自己调整报表的格式和内容,然后将它保存下来,程序下次启动时它自动调用保存了的报表格式那有多好。

本人通过如下方法最终实现了用的要求。

PB(PowerBuilder)有一种以PSR结尾的特殊的保存报表的文件格式(本文简称作PSR文件)。

根据数据窗口可以直接读取PSR文件生成报表的原理,程序通过生成PSR文件,实现动态报表格式的保存。

一、实现原理:PB中的报表其实就相当于是数据窗口。

第一步,动态报表的实现。

通过设置数据窗口对象(dataobject)中文本、列等的Resizeable 和moveable属性为1来实现对象位置的拖动控制,通过数据窗口的Modify函数实现对象值的更改(包括增加和删除)。

第二步,报表格式的保存。

在一个应用当中,数据窗口对象的名称总是唯一的,将每一个数据窗口对象转化成PSR文件存于数据库表中。

在窗口打开时,程序先校验报表格式是否存在。

如果存在,先将报表格式读取出来放在一个临时文件当中,然后设置数据窗口(datawindow)的数据对象(dataobject)为这个报表文件,然后提取数据;如果不存在,直接提取数据即可。

二、实现过程:1、建立一个数据库表用以保存报表格式文件。

表名:dyn_reportDwobjectVarchar2(20)数据窗口对象名称Primary keyRptitleVarchar2(80)报表的标题名称MemoLong raw 报表格式2、建立一个窗口w_temp。

定义实例变量如下:string is_dwtype,is_dwobject //保存报表中对象的类型及名称控件名称控件含义Dw_print数据窗口对象Cb_exit退出按钮Cb_savereport 报表格式保存按钮3、在窗口的OPEN事件中加入如下代码, 校验报表格式是否存在,如果存在读取定义好的报表格式到数据窗口。

非常全面的AndroidBitmap知识点梳理

非常全面的AndroidBitmap知识点梳理

非常全面的AndroidBitmap知识点梳理原文出处:/article/android-bitmap-tips.html在日常开发中,可以说和Bitmap低头不见抬头见,基本上每个应用都会直接或间接的用到,而这里面又涉及到大量的相关知识。

所以这里把Bitmap的常用知识做个梳理,限于经验和能力,不做太深入的分析。

1区别decodeResource()和decodeFile()这里的区别不是指方法名和参数的区别,而是对于解码后图片尺寸在处理上的区别:decodeFile()用于读取SD卡上的图,得到的是图片的原始尺寸decodeResource()用于读取Res、Raw等资源,得到的是图片的原始尺寸 * 缩放系数可以看的出来,decodeResource()比decodeFile()多了一个缩放系数,缩放系数的计算依赖于屏幕密度,当然这个参数也是可以调整的:我们分具体情况来看,现在有一张720×720的图片: inScaled属性如果inScaled设置为false,则不进行缩放,解码后图片大小为720×720; 否则请往下看。

如果inScaled设置为true或者不设置,则根据inDensity和inTargetDensity计算缩放系数。

默认情况把这张图片放到drawable目录下, 默认:以720p的红米3为例子,缩放系数 = inTargetDensity(具体320 / inDensity(默认160)= 2 = density,解码后图片大小为1440×1440。

以1080p的MX4为例子,缩放系数 = inTargetDensity(具体480 / inDensity(默认160)= 3 = density, 解码后图片大小为2160×2160。

*dpi文件夹的影响把图片放到drawable或者raw这样不带dpi的文件夹,会按照上面的算法计算。

android学习之bitmap的用法

android学习之bitmap的用法

bitmap的用法需求:从服务器下载一张图片,显示在ImageView控件上,并将该图片保存在移动设备的SD上。

步骤:(一)获得输入流//urlPath:服务器路径;public InputStream getUrlInputStream(String urlPath) throws IOException{URL url=new URL(urlPath);HttpURLConnection conn=(HttpURLConnection) url.openConnection();InputStream in=conn.getInputStream();if(in!=null){return in;}else{Log.i("test", "输入流对象为空");return null;}}(二)将输入流转化为Bitmap流public Bitmap getMyBitmap(InputStream in){Bitmap bitmap=null;if(in!=null){bitmap=BitmapFactory.decodeStream(in);//BitmapFactory的作用:create Bitmap objects from various sources,including files,streams and byte-arrays;return bitmap;}else{Log.i("test", "输入流对象in为空");return null;}}(三)给ImageView对象赋值public void setWidgetImage(Bitmap bitmap){ImageView img=new ImageView(this);if(bitmap!=null){img.setImageBitmap(bitmap);}}(四)获取SD卡上的文件存储路径public void createSDFile(){File sdroot=Environment.getExternalStorageDirectory();File file=new File(sdroot+"/Android/date/包名/文件名");if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){/*** 相关操作*/}}注意:SD卡的权限(五)将图片保存到SD卡上public boolean readToSDCard(File file,Bitmap bitmap) throws FileNotFoundException{ FileOutputStream os=new FileOutputStream(file);return press(pressFormat.PNG, 90, os);//press()的作用:write a compressed version of the bitmap to the specified outputstream;//true:表示操作成功,false:表示操作失败}。

60个PB数据窗口技巧

60个PB数据窗口技巧

60个PB数据窗口技巧数据窗口是一种用于展示数据的工具,它可以帮助用户更好地理解和分析数据。

下面是60个PB数据窗口技巧,帮助您更高效地使用数据窗口。

1.在数据窗口左下角的栏中输入关键词,可以快速筛选显示您所需的数据。

2.使用鼠标右键单击数据窗口的列头,可以自定义列的显示与隐藏。

3.在数据窗口的列头拖动可以更改列的顺序和宽度。

4.在数据窗口的列头双击,可以按该列进行排序。

5. 使用Ctrl键与鼠标左键选择多列,可以同时对这些列进行操作。

6.点击数据窗口的行头,可以选择整行。

7. 使用Shift键与鼠标左键选择多行,可以同时对这些行进行操作。

8.双击数据窗口的行头,可以自动调整该行的高度,使其适应内容。

9.在数据窗口的列头右键单击,可以进行更多的列操作,如冻结列、设置列格式等。

10. 使用Ctrl+Enter键,可以在当前单元格中插入换行符。

11. 使用Ctrl+D键,可以复制当前单元格的内容到下一个单元格。

12.在数据窗口的列头左键单击,可以选择一整列。

13. 使用Ctrl+Shift键与鼠标左键选择多个非连续的列。

14.在数据窗口的列头上方的空白区域右键单击,可以选择整个数据窗口。

15.在数据窗口左上角的复选框,可以选择或取消选择整个数据窗口。

16. 使用Ctrl+C键,可以复制选中的单元格或整行到剪贴板。

17. 使用Ctrl+V键,可以粘贴剪贴板中的内容到当前单元格或行。

18. 使用Shift+Enter键,可以在当前单元格下方插入一行。

19. 使用Ctrl+K键,可以在当前单元格中插入一个链接。

20. 使用Ctrl+Space键,可以选择整列。

21. 使用Shift+Space键,可以选择整行。

22.在数据窗口的列头右键单击,可以选择“筛选”,进行高级筛选操作。

23.在数据窗口的列头右键单击,可以选择“合并”,将相邻的相同内容的单元格合并为一个。

24.在数据窗口的列头右键单击,可以选择“拆分”,将合并的单元格拆分回原来的单元格。

PB知识点整理(word文档物超所值)

PB知识点整理(word文档物超所值)

变量类型•局部变量(Local ):在定义该变量的函数、事件中使用。

局部代码执行完即销毁。

•实例变量(Instance ):属于一个对象的一个实例。

实例不被销毁,变量一直存在。

如无特殊声明,则其他对象都可以访问该变量。

•共享变量(Shared ):被同一对象的多个实例中共同使用(无论有几个实例,都只有一个值),整个应用不被销毁,变量一直存在。

其他对象无法访问该变量。

•全局变量(Global ):属于整个应用。

整个应用不被销毁,变量一直存在。

所有对象都可以访问该变量。

•按变量的作用范围和生命周期来划分作用范围生命周期局部变量所在的事件或函数所在的事件或函数实例变量所在对象的具体实例所在对象的具体实例共享变量所在对象的所有实例整个应用程序全局变量整个应用程序整个应用程序提倡多使用局部变量,适当使用Instance,尽量少用Shared 和Global,变量、常量的声明•变量说明:datatype variablename•变量名建议使用:变量类型+数据类型+”_”+其它,如:–String gs_dwmc–Int ii_count–Long sl_userid–Datetime ldt_today–String ls_xm,ls_bj–Long ll_classid = 1•常量变量说明:CONSTANT datatype variablename = value数组•String ls_city[] //下标默认从1开始•String ls_city[10] //下标默认从1开始•String ls_city[2 to 20] //下标从2到20•String ls_city[2,10]•数组初始化:int li_i[9]={2,3,4,5,6,7,8,9,10}•数组循环赋值:int i,li_i[9]for i=1 to 9li_i[i] = i+1next结构str_student lstr_studentlstr_student.id=1lstr_student.xm=‘张三’lstr_student.xb=‘1’lstr_student.csrq=date(‘1975-01-01’)Openwithparm(w_test,lstr_student)str_student lstr_studentlstr_student=message.powerobject加减乘除•算术运算:+, - , *, /, ^•关系运算:=, <>, >, <, >=, <=, like•逻辑运算:NOT, AND, OR•字符串连接:ls_name = ls_name + ‘医院’常用的函数•Messagebox:显示出错、警告、提示及其他重要信息。

Bitmap用法总结

Bitmap用法总结

Bitmap用法总结1、Drawable → Bitmappublic static Bitmap drawableToBitmap(Drawable drawable) {Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight(),drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);Canvas canvas = new Canvas(bitmap);// canvas.setBitmap(bitmap);drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());drawable.draw(canvas);return bitmap;}2、从资源中获取BitmapResources res=getResources();Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);3、Bitmap → byte[]private byte[] Bitmap2Bytes(Bitmap bm){ByteArrayOutputStream baos = new ByteArrayOutputStream();press(pressFormat.PNG, 100, baos);return baos.toByteArray();}4、byte[] → Bitmapprivate Bitmap Bytes2Bimap(byte[] b){if(b.length!=0){return BitmapFactory.decodeByteArray(b, 0, b.length);}else {return null;}}5、保存bitmapstatic boolean saveBitmap2file(Bitmap bmp,String filename){ CompressFormat format= pressFormat.JPEG;int quality = 100;OutputStream stream = null;try {stream = new FileOutputStream("/sdcard/" + filename);} catch (FileNotFoundException e) {// TODO Auto-generated catch blockGenerated by Foxit PDF Creator © Foxit Software For evaluation only.e.printStackTrace();}return press(format, quality, stream);}6、将图片按自己的要求缩放// 图片源Bitmap bm = BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.dog));// 获得图片的宽高int width = bm.getWidth();int height = bm.getHeight();// 设置想要的大小int newWidth = 320;int newHeight = 480;// 计算缩放比例float scaleWidth = ((float) newWidth) / width;float scaleHeight = ((float) newHeight) / height;// 取得想要缩放的matrix参数Matrix matrix = new Matrix();matrix.postScale(scaleWidth, scaleHeight);// 得到新的图片Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);// 放在画布上canvas.drawBitmap(newbm, 0, 0, paint);相关知识链接:/thread-3162-1-1.html7、bitmap的用法小结BitmapFactory.Options option = new BitmapFactory.Options();option.inSampleSize = 2; //将图片设为原来宽高的1/2,防止内存溢出Bitmap bm = BitmapFactory.decodeFile("",option);//文件流URL url = new URL("");InputStream is = url.openStream();Bitmap bm = BitmapFactory.decodeStream(is);android:scaleType:android:scaleType是控制图片如何resized/moved来匹对ImageView的size。

bitmap

bitmap

位图位图图像(bitmap), 亦称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的。

这些点可以进行不同的排列和染色以构成图样。

当放大位图时,可以看见赖以构成整个图像的无数单个方块。

扩大位图尺寸的效果是增大单个像素,从而使线条和形状显得参差不齐。

然而,如果从稍远的位置观看它,位图图像的颜色和形状又显得是连续的。

在体检时,工作人员会给你一个本子,在这个本子上有一些图像,而图像都是由一个个的点组成的,这和位图图像其实是差不多的。

由于每一个像素都是单独染色的,您可以通过以每次一个像素的频率操作选择区域而产生近似相片的逼真效果,诸如加深阴影和加重颜色。

缩小位图尺寸也会使原图变形,因为此举是通过减少像素来使整个图像变小的。

同样,由于位图图像是以排列的像素集合体形式创建的,所以不能单独操作(如移动)局部位图。

一般情况下,位图是工具拍摄后得到的。

如数码相机拍摄的照片.分辨率是一个笼统的术语,它指一个图像文件中包含的细节和信息的大小,以及输入、输出、或显示设备能够产生的细节程度。

操作位图时,分辨率既会影响最后输出的质量也会影响文件的大小。

处理位图需要三思而后行,因为给图像选择的分辨率通常在整个过程中都伴随着文件。

无论是在一个300 dpi的打印机还是在一个2570dpi的照排设备上印刷位图文件,文件总是以创建图像时所设的分辨率大小印刷,除非打印机的分辨率低于图像的分辨率。

如果希望最终输出看起来和屏幕上显示的一样,那么在开始工作前,就需要了解图像的分辨率和不同设备分辨率之间的关系。

显然矢量图就不必考虑这RGB位图颜色的一种编码方法,用红、绿、蓝三原色的光学强度来表示一种颜色。

这是最常见的位图编码方法,可以直接用于屏幕显示。

CMYK位图颜色的一种编码方法,用青、品红、黄、黑四种颜料含量来表示一种颜色。

常用的位图编码方法之一,可以直接用于彩色印刷。

编辑本段位图图像属性索引颜色/颜色表位图常用的一种压缩方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

pb的bitmap用法
PB(PowerBuilder)中的bitmap可以通过以下步骤进行使用:
1. 创建一个位图(bitmap)对象。

2. 定义位图的数据类型,可以是8位无符号整数(uint8)或16位无符号整数(uint16)。

3. 初始化位图,可以使用位图编辑器或编程方式进行初始化。

4. 在应用程序中,可以使用位图对象进行图像处理、显示等操作。

例如,可以将位图显示在窗口、控件或打印机上,也可以将位图保存到文件中。

5. 如果需要将位图数据保存到数据库中,可以使用PowerBuilder 的数据窗口(DataWindow)控件,将位图数据作为二进制数据类型存储在数据库中。

以上是PB中bitmap的基本用法,具体实现方式可能因PowerBuilder版本和开发环境而有所不同。

建议参考PowerBuilder的官方文档或相关教程进行深入学习。

相关文档
最新文档