位图

图片加载原理

那年仲夏 提交于 2019-11-29 04:11:30
图片加载 是有 CPU GPU 联合协作的 CPU 是 用来计算 视图创建 视图frame 图片解码(将压缩的图片数据解码成未压缩的位图形式,为什么要压缩图片,因为图片数据太大,实际上不管是JPEG还是PNG 都是一种压缩的位图图形格式,只不过PNG 图片是无损压缩,并且支持alpha通道。而JPEG图片则是有损压缩,可以指定0 - 100%的压缩比。然而,将磁盘中图片渲染到屏幕之前,必须要得到图片的原始像素数据,才能让GPU渲染,GPU渲染流程 : 1.GPU获取图片的坐标 2.将坐标交给顶点着色器 3.将图片光栅化(获取图片对应屏幕上的像素点) 4.片元着色器计算(计算每个像素点的最终显示颜色值) 5.从帧缓冲区(Frame buffer)中渲染到屏幕上。 图片解压缩的原理: 当未解压缩的图片要渲染到屏幕时,系统会在主线程对图片进行解压缩,而如果图片已经解压缩了,系统就不会再对图片进行解压缩。因此,要在子线程提前对图片进行强制解压缩即可 而强制解压缩的原理就是对图片进行重新绘制,得到一张新的解压缩后的位图。核心函数是 CGBitmapContentCreate 创建一个位图上下文 CGContextDrawImage 将原始数据绘制到上下文中 CGBitmapContextCreateImage 创建一张新的解压缩后的位图 开源框架 YYImage ,SDWebImage

Delphi GDI对象之脱屏位图(Offscreen Bitmaps)

杀马特。学长 韩版系。学妹 提交于 2019-11-28 20:30:49
脱屏位图( Offscreen Bitmaps) 脱屏位图,也叫内存位图,普遍用于 Windows程序设计中。它在内存中制作图像,然后利用Draw方法在屏幕上显示出来。当用户想更快的在屏幕上绘制图像时,脱屏位图有助于避免闪烁。脱屏位图也适合于复杂制图程序。用户可以将图像预存起来,需要时显示出来。脱屏位图用于动画,最流行的动画制作方法是Microsoft的DirectX SDK。 脱屏位图的原则是三个简单的步骤: 建立内存位图( Create a memory bitmap) 绘制内存位图( Draw on the memory bitmap) 拷贝内存位图于屏幕( Copy the memory bitmap to the screen) 创建内存位图( Creating a Memory Bitmap) 创建内存位图很容易。事实上,前面的讲解中已经创建过好几次了。每次创建 TBitmap对象时就是在创建内存位图,其中一些是将文件载入内存位图中,还有一些是创建内存位图,设置其大小,然后绘制内存位图,例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 procedure TForm1.btn1Click(Sender: TObject); var Bitmap: TBitmap; I, X, Y, W,

自定义view的使用(一)

落爺英雄遲暮 提交于 2019-11-28 08:39:55
自定义View 记录第一次写博客 记录第一次写博客 希望可以一直坚持,哈哈哈哈!小黑菜的变白之路。 public class MyView extends View: 定义MyView类继承View; 2.在xml文件里引入完整包名, 代码 < com . example . myapplication1 . MyView android : id = "@+id/smileview" android : background = "#FF0000" android : layout_gravity = "center_vertical" android : layout_width = "wrap_content" android : layout_height = "wrap_content" / > 安装界面绘制流程: measure( 测量控件大小),layout(摆设控件),draw(在view中绘画)。 View中方法 : onMeasure()(指定自己的宽高)——>onDraw()(绘制自己的内容) ViewGroup中方法 : onMeasure()(指定自己的宽高和所有子View的宽高) ——> onLayout() (摆放所有子view)——> onDraw()(绘制内容) MyView代码如下: import android . content .

vc中常用的方法

谁说胖子不能爱 提交于 2019-11-28 03:09:15
一、打开CD-ROM mciSendString("Set cdAudio door open wait",NULL,0,NULL); 二、关闭CD_ROM mciSendString("Set cdAudio door closed wait",NULL,0,NULL); 三、关闭计算机 OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构 OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&OsVersionInfo); //获取操作系统版本信息 if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { //Windows98,调用ExitWindowsEx()函数重新启动计算机 DWORD dwReserved; ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、 //关机、关闭电源等操作 // 退出前的一些处理程序 } 四、重启计算机 typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针 HINSTANCE hInst = LoadLibrary(

常用EXE文件反编译工具【转】

岁酱吖の 提交于 2019-11-27 21:51:50
常用EXE文件反编译工具【转】 http://www.cnblogs.com/happyday56/p/3740108.html PE Explorer V1.99 R5 绿色汉化特别版_强大的可视化汉化集成工具 功能极为强大的可视化汉化集成工具,可直接浏览、修改软件资源,包括菜单、对话框、字符串表等; 另外,还具备有 W32DASM 软件的反编译能力和PEditor 软件的 PE 文件头编辑功能,可以更容易的分析源代码,修复损坏了的资源,可以处理 PE 格式的文件如:EXE、DLL、DRV、BPL、DPL、SYS、CPL、OCX、SCR 等 32 位可执行程序。 该软件支持插件,你可以通过增加插件加强该软件的功能, 原公司在该工具中捆绑了 UPX 的脱壳插件、扫描器和反汇编器,非常好用。 唯一遗憾的是欠缺字典功能…… 点击这里下载文件 eXeScope V6.5 修改QQ版本号 绿色汉化版 小巧但功能极其强大的本地化工具,可以直接修改 VC++ 及 DELPHI 编制的 PE 格式文件的资源,包括菜单、对话框、字符串和位图等,也可与其它本地化工具配合使用。 在汉化中不推荐使用 eXeScope 作为汉化工具,仅作为汉化辅助工具。6.50 版主要对 DELPHI 7 编译的程序支持较好,对 DELPHI 7 以前版本编译的程序,建议使用 6.30 版本,因为该程序对 Unicode

SVG基本使用(一)

泪湿孤枕 提交于 2019-11-27 21:29:54
一、SVG概念 1.什么是SVG? SVG英文全称为Scalable Vector Graphics,意思为可缩放的矢量图 2.位图和矢量图 在计算机中有两种图形, 一种是位图, 一种是矢量图 2.1 位图: 传统的 jpg / png / gif图都是位图 位图是一个个很小的颜色小方块组合在一起的图片。一个小方块代表1px 2.2 位图的优点和缺点: 优点: 色彩丰富逼真 缺点: 放大后会失真, 体积大 2.3 矢量图 矢量图是用XML格式(HTML也是XML格式,是特殊的xml)定义, 通过各种「路径」和「填充颜色」来描述渲染的的图片 2.4 矢量图优点和缺点: 优点: 放大后不会失真(因为小方格不是固定死的), 体积小 缺点: 不易制作色彩变化太多的图象 3.svg的宽高: 默认值:同canvas一样,svg也有默认的宽高、;并且默认宽高同canvas一样也是:300 * 150 修改宽高:同canvas不一样。canvas只能在行内修改。而svg使用css和行内属性都可以修改宽高。 二、SVG使用方式 1.SVG常见的四种使用方式 1.1、内嵌到HTML中(直接在HTML的body中绘制) <svg width="500" height="500"> <circle cx="100" cy="100" r="50" fill="transparent" stroke="

HTML知识点总结Ⅱ

纵然是瞬间 提交于 2019-11-27 19:06:11
㈠表格 ⑴表格的基本结构 ①表格的基本标签有:table标签(表格),tr标签(行),td标签(单元格)。<tr>标签和<td>标签都要在表格的开始标签<table>和结束标签</table>之间才有效。 ②tr即"table row"(表格行),td即"table data cell"(表格单元格)。 ③<table>和</table>标记着表格的开始和结束;<tr>和</tr>标记着行的开始和结束;<td>和</td>标记着单元格的开始和结束。在表格中包含几组<tr></tr>就表示该表格为几行。 ④用代码看一下它的语法: 1 <html> 2 3 <body> 4 5 <p>每个表格由 table 标签开始。</p> 6 <p>每个表格行由 tr 标签开始。</p> 7 <p>每个表格数据由 td 标签开始。</p> 8 9 <h4>一列:</h4> 10 <table > 11 <tr> 12 <td>100</td> 13 </tr> 14 </table> 15 16 <h4>一行三列:</h4> 17 <table > 18 <tr> 19 <td>100</td> 20 <td>200</td> 21 <td>300</td> 22 </tr> 23 </table> 24 25 <h4>两行三列:</h4> 26 <table> 27 <tr> 28 <td

CorelDRAW快速去除图片背景颜色

一笑奈何 提交于 2019-11-27 07:38:44
当我们需要从网上借助一些素材图片在 CorelDRAW 中运用时,往往需要去掉图片的背景颜色。本文小编分享CDR中如何快速去除图片背景颜色的方法,通过此方法可以做简单的照片抠图、合成。 1. 打开CorelDRAW软件,导入待处理的图片。 2. 此时导入的是位图图片,如果不是位图还可以将其装换为位图,执行“位图>转换为位图”即可。如果该图片是位图模式(位图即由像素网格或点网格组成的图像。)那么观察“位图”菜单下的滤镜状态为可用。 3. 选择位图,执行“位图>位图颜色遮罩”命令,在界面右侧弹出的“位图颜色遮罩”泊坞窗中选“隐藏颜色”即将选定的颜色隐藏,在颜色列表中选择最上面的一个颜色条,将其勾选。 注:在选中位图的状态下,颜色列表中选择下一个颜色条,用“颜色选择”工具选择图片中的其他颜色,同样可做其他隐藏颜色处理。 4. 单击“吸管”工具按钮,吸取位图中想要遮罩掉的色彩部分,移动“容差”值滑块,单击“应用”按钮,即可把选择的色彩变成透明色,如图所示。 5. 输入文字,调整顺序“向后一层”,能够看到背景文字不受图片影响。 CorelDRAW是一款通用且强大的矢量图形设计软件,让创意和功能结合打造专属风格,关于CorelDRAW的更多内容请点击 CDR教程 咨询。 来源: https://blog.csdn.net/wangdan1469/article/details/99552927

CorelDRAW快速去除图片背景颜色

非 Y 不嫁゛ 提交于 2019-11-27 07:29:00
当我们需要从网上借助一些素材图片在 CorelDRAW 中运用时,往往需要去掉图片的背景颜色。本文小编分享CDR中如何快速去除图片背景颜色的方法,通过此方法可以做简单的照片抠图、合成。 1. 打开CorelDRAW软件,导入待处理的图片。 2. 此时导入的是位图图片,如果不是位图还可以将其装换为位图,执行“位图>转换为位图”即可。如果该图片是位图模式(位图即由像素网格或点网格组成的图像。)那么观察“位图”菜单下的滤镜状态为可用。 3. 选择位图,执行“位图>位图颜色遮罩”命令,在界面右侧弹出的“位图颜色遮罩”泊坞窗中选“隐藏颜色”即将选定的颜色隐藏,在颜色列表中选择最上面的一个颜色条,将其勾选。 注:在选中位图的状态下,颜色列表中选择下一个颜色条,用“颜色选择”工具选择图片中的其他颜色,同样可做其他隐藏颜色处理。 4. 单击“吸管”工具按钮,吸取位图中想要遮罩掉的色彩部分,移动“容差”值滑块,单击“应用”按钮,即可把选择的色彩变成透明色,如图所示。 5. 输入文字,调整顺序“向后一层”,能够看到背景文字不受图片影响。 CorelDRAW是一款通用且强大的矢量图形设计软件,让创意和功能结合打造专属风格,关于CorelDRAW的更多内容请点击 CDR教程 咨询。 来源: https://www.cnblogs.com/danzi/p/11351135.html

用MFC如何高效地绘图

℡╲_俬逩灬. 提交于 2019-11-27 01:45:34
显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。 而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。 MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单, 只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。 我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈 我的一些观点。 1、显示的图形为什么会闪烁? 我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏 幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时, 总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容 反差很大,这样在短时间内背景色与显示图形的交替出现,使得显示窗口看起来 在闪。如果将背景刷设置成NULL,这样无论怎样重绘图形都不会闪了。 当然,这样做会使得窗口的显示乱成一团,因为重绘时没有背景色对原来 绘制的图形进行清除,而又叠加上了新的图形。 有的人会说,闪烁是因为绘图的速度太慢或者显示的图形太复杂造成的, 其实这样说并不对,绘图的显示速度对闪烁的影响不是根本性的。 例如在OnDraw(CDC *pDC)中这样写: pDC->MoveTo(0,0); pDC->LineTo(100,100); 这个绘图过程应该是非常简单、非常快了吧,但是拉动窗口变化时还是会看见 闪烁。其实从道理上讲