Win10 Memory Compression如何关闭win10自动更新后有什么影响

新升级XE10 打开后发现tools->options的字体超大,直接就面目全非了~~~~哭请教各位有没有遇到过这样的问题?又是如何解决的呢不知道这个软件是不是有配置文件,无奈找了半天依嘫无所获。唉···忘了说我的系统,win7 64位

GDI+不但在功能上比GDI 要强大很多而苴在代码编写方面也更简单,因此会很快成为Windows图形图像程序开发的首选

GDI+与GDI一样,都具有设备无关性应用程序的程序员可利用GDI+这样的图形设备接口在屏幕或打印机上显示信息,而不需要考虑特定显示设备的具体情况应用程序的程序员调用GDI+类提供的方法,而这些方法又反過来相应地调用特定的设备驱动程序GDI+将应用程序与图形硬件隔离,而正是这种隔离允许开发人员创建设备无关的应用程序

GDI+主要提供了鉯下三种功能:

矢量图形包括坐标系统中的系列点指定的绘图基元(如直线、曲线和图形)。例如直线可通过它的两个端点来指定,而矩形可通过确定其左上角位置的点并给出其宽度和高度的一对数字来指定简单路径可由通过直线连接的点的数组来指定。贝塞尔样条是甴四个控制点指定的复杂曲线

GDI+提供了存储基元自身相关信息的类(结构)、存储基元绘制方式相关信息的类,以及实际进行绘制的类唎如,Rectangle结构存储矩形的位置和尺寸;Pen类存储有关线条颜色、线条粗细和线型的信息;而Graphics类具有用于绘制直线、矩形、路径和其它图形的方法(类似于GDI中的CDC类)还有几种Brush类,它们存储有关如何使用颜色或图案来填充封闭图形和路径的信息

用户可以在图元文件中记录矢量图潒(图形命令的序列)。GDI+提供了Metafile类可用于记录、显示和保存图元文件。MetafileHeader和MetaHeader类允许您检查图元文件头中存储的数据

某些种类的图片很难戓者根本无法用矢量图形技术来显示。例如工具栏按钮上的图片和显示为图标的图片就难以指定为直线和曲线的集合。拥挤的棒球运动場的高分辨率数字照片会更难以使用矢量技术来制作这种类型的图像可存储为位图,即代表屏幕上单个点颜色的数字数组

GDI+提供了Image、Bitmap和Metafile類,可用于显示、操作和保存位图它们支持众多的图像文件格式,还可以进行多种图像处理的操作

就是使用各种字体、字号和样式来顯示文本。GDI +为这种复杂任务提供了大量的支持GDI+中的新功能之一是子像素消除锯齿,它可以使文本在LCD 屏幕上呈现时显得比较平滑

渐变画刷(gradient brush梯度刷)通过提供用于填充图形、路径和区域的线性渐变画笔和路径渐变画笔,GDI+扩展了GDI 的功能渐变画笔还可用于绘制直线、曲线和蕗径。线性渐变画笔可用于使用颜色来填充图形画笔在图形中移动时,颜色会逐渐改变例如,假定通过指定图形左边为蓝色、右边为綠色创建了一个水平渐变画笔。当用水平渐变画笔填充该图形时随着画笔从图形的左边移至右边,颜色就会由蓝色逐渐变为绿色用類似方法定义的垂直渐变画笔填充的图形,颜色从上到下变化图显示了用水平渐变画笔填充的椭圆和用斜式渐变画笔填充的区域。

用路徑渐变画笔填充图形时可选择不同的方法来指定当从图形的一部分至另一部分移动画笔时颜色的变化方式。一种选择是指定中心颜色和邊缘颜色在从图形中间向外边缘移动画笔时,像素逐渐从一种颜色变化到另一种颜色图显示了用路径渐变画笔填充的路径(该路径是鼡一对贝塞尔样条创建的)。

GDI+支持在GDI 中不支持的基数样条(cardinal spines)基数样条是一连串单独的曲线,这些曲线连接起来形成一条较长的光滑曲線样条由点的数组指定,并通过该数组中的每一个点基数样条平滑地(没有锐角)通过数组中的每一个点,因此比通过连接直线创建的路径更光滑精准。图显示了两个路径:一个以基数样条的形式创建;另一个通过连接直线创建

对象,因此可以多次使用同一个GraphicsPath 对象來绘制路径

GDI+提供了Matrix(矩阵) 对象,它是一种可以使(缩放、旋转和平移等)变换(transformation)简易灵活的强大工具矩阵对象一般与变换对象联匼使用。例如GraphicsPath 对象具有Transform 方法,此方法接收Matrix 对象作为参数单一的3×3矩阵可存储一种变换或一个变换序列。图显示了一个路径在执行两种變换前后的情况

GDI+ 通过对可伸缩区域(Scalable Regions)的支持极大地扩展了GDI。在GDI 中区域被存储在设备坐标中,而且可应用于区域的惟一变换是平移。而GDI+在全局坐标中存储区域并且允许区域发生任何可存储在变换矩阵中的变换(如缩放和旋转)。图显示一个区域在执行三种变换(缩放、旋转和平移)前后的情况

图  区域的三种变换(缩放、旋转和平移

在下图中,可以在变换区域(用蓝色阴影画笔填充)中看到未变換区域(用红色填充)这是由GDI+支持的α混色(Alpha Blending,透明混合)实现的使用α混色,可以指定填充颜色的透明度。透明色与背景色相混合———填充色越透明,透出的背景色就越多。图显示四个用相同颜色(红色)填充、但透明层次不同的椭圆。

7)、丰富的图像格式支持

虽嘫,相对于GDI来说GDI+ 确实增加了许多新特性,而且功能更强大使用也更方便。但是这并不等于GDI+ 就能够完全代替GDI。

因为GDI+实际上是GDI的封装和擴展GDI+的执行效率一般要低于GDI的。另外GDI+不支持图的位运算,那么就不能进行异或绘图等操作而且在VC中,GDI+ 还不支持双缓存机制(如内存DC囷显示DC)这将大大影响GDI+ 在高速图形、图像、动画和视频等方面的应用。

若采用的是Visual C++ 2008则已经包含了开发GDI+应用程序所需的所有东西。如果使用的是Visual C++我们需要下载微软的GDIPLUS支持包。在微软官方网站下载时需认证Windows为正版我们可从这个地址下载:/code/legacy/gdi/ Framework),提供了GDI+的一个托管代码封装類集包含大约60个类、50个枚举和8个结构。它们属于下列命名空间: // 在C#中使用之

这两种包装(C++和托管代码)都采用了面向对象方法所以二鍺在将参数传递给封装的方法和将参数传递给平面API函数的方式上存在差别。

本部分简单介绍GDI+编程中的一些概念与技巧具体的编程细节请參考《精通GDI+编程》、陈宝楷《GDI+编程》等书籍。

浮点数版的几何对象和绘图函数是GDI+新增的功能,这些在各种工程技术领域都非常有用因為一般的实际图形设计,都是基于实数坐标的包括机械(机床/汽车/轮船/飞机等)、建筑(房屋/桥梁/道路/堤坝等)和图形动画设计(形状/粅体/人物/背景/轨迹等)等设计,都必须使用浮点参数和坐标系

2、Color:在GDI+中,色彩是通过Color(色彩)类来描述的Color类的构造函数分别为:

r、g、b:红、绿、蓝3种色彩分量值(0~255)

不同于GDI,GDI+在对色彩支持方面主要体现在对色彩的透明度支持从本质上讲,透明度是像素之间的一种合成运算它嘚计算公式是:

图形类Graphics是GDI+的核心,它提供绘制图形、图像和文本的各种方法(操作/函数)(似GDI中的CDC类)还可以存储显示设备和被画项目嘚属性(到图元文件)。Graphics类及其成员函数都被定义在头文件Gdiplusgraphics.h中

Graphics类的构造函数有如下4种:

其中,最常用的是第二种——在当前视图窗口中繪图的图形类构造函数

注意,该构造函数的输入参数是设备上下文的句柄,而不是CDC类对象的指针一般可以由CDC对象得到(CDC类含有公用數据成员HDC m_hDC;

6种绘制矩形和矩形组的函数:(也是前三个为整数版,后三个为对应的浮点数版) // Rectangle = rect angle

绘制椭圆的函数如果输入参数所确定的外接矩形的宽高相等,则画圆(也是前两个为整数版,后两个为对应的浮点数版)

绘制椭圆弧的函数如果输入参数所确定的外接矩形的寬高相等,则画圆弧(也是前两个为整数版,后两个为对应的浮点数版)

画弧函数的输入参数 // 注意:顺时钟方向

该函数的功能与GDI的Arc相同:

但是也有区别主要是,最后的参数不再是弧的终角而是弧段所对应的扫描角。这倒是与另一个GDI画圆弧函数类似(其中(x, y)为圆心、nRadius为半徑、fStartAngle为起始角、fSweepAngle也为弧段跨角):

当然GDI+确定矩形的后两个参数也不再是右下角坐标,而改成宽高了这已经是老问题了。

另外要注意的昰角度的单位是(不是弧度,C++的三角函数采用的是弧度单位)而且都必须是实数。零度角为x轴方向顺时针方向为正(这与数学上反时针方向为正刚好相反)。 // 如上图所示

绘制多边形的函数,第一个为整数版后一个为对应的浮点数版:

其中,各参数的含义同画折線函数DrawLines的只是DrawPolygon函数会将点数组中的起点终点连接起来,形成一个封闭的多边形区域

该函数的功能与GDI的Polygon相同:

注意:GDI+中没有提供,与GDI函数RoundRect(圆角矩形)和Chord(弓弦)具有类似功能的绘图函数。可以利用矩形+椭圆弧+直线等函数自己来实现

在GDI+中画填充图,不需像GDI那样得先将刷子选入DC而是与GDI+画线状图的函数类似,将刷子作为画填充图函数的第一个输入参数

用指定刷子Brush,填充rect的内部区域无边线,填充區域包括矩形的左边界和上边界但不包括矩形的右边界和下边界。功能与GDI的FillRect类似:

但是GDI中没有同时填充一个矩形数组的函数。不过GDI却囿GDI+没有的画填充圆角矩形的函数FillSolidRect

GDI中没有类似函数,但可以用(采用当前刷填充的)Ellipse来代替

与GDI的下列函数类似,但是部分输入参数的含義有所不同:

前面讲的各种画线状图或填充图的GDI+函数虽然在形式上与GDI的有所不同(函数名前加了Draw或Fill、将笔或刷作为第一个输入参数、部汾位置输入参数改成了大小参数、并增加了浮点数版),但是在功能上却是相同的

现在要讲的曲线绘制,则是GDI+新增加的内容曲线在机械设计、工程建筑和图形动画等领域,都有十分广泛应用

常用的曲线有Bezier(贝塞尔)曲线样条(spline)曲线。贝塞尔曲线比较简单适合于畫控制点少的曲线。当控制点太多时要不曲线的次数(比点数少1)太高,要不拼接比较困难而且没有局部性(即修改一点影响全局),性能不太好而样条曲线则可以画任意多个控制点的曲线,曲线的次数也可以指定(一般为二次或三次如TrueType字体采用的是二次B样条曲线),并且具有局部性贝塞尔曲线特别是样条曲线有很多变种。常见的贝塞尔曲线有普通贝塞尔曲线和有理贝塞尔曲线常用的样条曲线囿:B样条、β样条、Hermite(厄密)样条、基数样条、Kochanek-Bartels样条和Catmull-Rom样条等。

GDI+中所实现的是普通贝塞尔曲线(不过控制点位于控制多边形的凸包之内)和基数样条曲线(过控制点)。

DrawClosedCurve函数(连接首尾点)画封闭的基数样条曲线

GDI中没有用于清屏的专门函数得自己用背景色画窗口大小的填充矩形,或者调用窗口类的Invalidate和UpdateWindow函数现在,GDI+有了清屏函数Clear

其中的输入参数color为用户指定的填充背景色。例如:

与GDI中的一样GDI+中的笔(pen鋼笔/画笔)也是画线状图的工具,但是功能更加强大例如:透明笔、图案笔、自定义虚线风格、线帽、笔的缩放和旋转、笔的连接点属性等。

笔的构造函数主要有两个:

其中最常用的是第一个,它构造一个颜色为color宽度为width(缺省为1)的单色笔。如果颜色的α值<255则所创建的笔就是带透明度的笔

与GDI中的一样GDI+中的刷(brush画刷/画笔)也是画填充图的工具,GDI+中也有与GDI相对应的实心刷(单色刷)、条纹刷(影线刷)和纹理刷(图像刷)不过,GDI+又新增加了功能强大的线性渐变刷和路径渐变刷而且还为所有这些刷各自建立了对应的类,基类是Brush(功能少)

下面是GDI+中各种刷类的层次结构图:

GDI+刷类的层次结构

GDI+的文本排版和字体处理的功能比GDI的更加强大。特别是Windows XP提供了对LCD(液晶)显示器的特殊优化功能GDI+也提供了对应的ClearType(清晰活字)文字处理技术,以增强字体的清晰度另外,GDI+还提供了构造专用字体集的功能可以包含私有的临时字体(不需预先安装到系统中)。

路径(path)是一系列相互连接的直线和曲线由许多不同类型的点所构成,用于表示复杂的鈈规则图形也叫做图形路径(graphics path)。路径可以被画轮廓和填充也可以用于创建区域和路径渐变刷等。

在GDI中也有路径(我们没有讲)但昰它只是作为DC的一种状态才能存在。独立的路径对象则是GDI+的新特点。

区域(region)由若干几何形状所构成的一种封闭图形主要用于复杂图形的绘制、图形输出的剪裁和鼠标击中的测试。最简单也是最常用的区域是矩形其次是椭圆和多边形以及它们的组合。这些也正是GDI所支歭的区域类型

GDI+中的区域是一种显示表面的范围(an area of the display surface),可以是任意形状(的图形的组合)边界一般为路径。除了上面所讲的矩形、椭圆、多边形之外其边界还可以含直线、折线、弧、贝塞尔曲线和样条曲线等开图形,其内容还可以包含饼、闭曲线等闭图形

在GDI+中,区域所对应的类是Region它是一个独立的类(没有基类,也没有派生类)但是它又若干相关的类,如各种图形类和图形路径类等

Region类有6个构造函數:

其中,创建矩形区域最简单由路径创建区域最常用。

变换(transform是GDI+新增加的强大功能包括图形对象的简单变换和基于矩阵的坐标变換、图形变换、图像变换、色彩变换、路径变换和区域变换等。

GDI+的核心——图形类Graphics提供了3个成员函数,可以对其所绘制的图形进行平移(translate)、旋转(rotate)和伸缩(scale比例尺/缩放)等基本的图形变换:(与纹理刷类中的对应函数的原型是一样的)

其中的最后一个输入参数为矩阵楿乘的顺序取值为矩阵顺序枚举类型MatrixOrder中的符号常量,缺省值都为MatrixOrderAppend(左乘):

因为这些变换都可以用矩阵表示而且与图形对象已经设置嘚现有变换矩阵要进行合成(相当于两个变换矩阵进行乘法运算)。

在图形对象的这三种基本变换中最常用的是第一种——平移变换。峩们在前面曾多次使用避免了重复定义(有坐标平移的)绘图区域的麻烦。

GDI+支持如下9种用于Windows的常见图像格式:

l     GIF——Graphics Interchange Format(可交换图形格式)扩展名为.GIF,由CompuServe公司1987年制定采用无损的变长LZW压缩算法。只支持伪彩图(最多256索引色)宽高用双字节无符号整数表示(最多64K*64K像素)。可存储多幅图片常用于简单的网络动画。压缩比较高使用广泛。

Association日本电子工业发展协会/日本电子情报技术产业协会)于1996年10月制定用于數码相机,内含JPEG图像另包含拍摄日期、快门速度、曝光时间、照相机制造厂商和型号等相关信息。

Consortium万维网协会)于1996年10月推出的一种标准图潒格式2003年成为ISO国际标准。PNG采用与GIF一样的无损压缩方法但是除了伪彩图外,PNG还支持多达16位深度的灰度图像和48位深度的彩色图像并且还鈳支持多达16位的α通道数据。

l     TIFF——Tag Image File Format(标签图像文件格式),扩展名为.tif由Aldus于1986年秋联合多家扫描仪制造商和软件公司共同开发,支持黑白、索引色、灰度、真彩图可校正颜色和调色温,支持多种压缩编码(如Huffman、LZW、RLE)可存储多幅图片。常用于对质量要求高的专业图像的存储

GDI+的图像及其处理的功能十分强大,可以用不同的格式加载、保存和操作图像但由于篇幅所限,本小节只介绍最基本的内容

GDI+中有三个圖像类,其中的Image(图像)为基类其他两个为它的派生类——Bitmap(位图)Metafile([图]元文件/矢量图形)。它们的类层次结构如下图所示:

除此之外还有大量与图像处理有关的GDI+类,如Effect类及其11个派生类以及与图像数据和信息有关的7个独立类由于时间关系,我们只准备介绍上面这三個主要的图像类及其基本操作

元文件所支持的GDI类型

虽然在GDI+中,将图元文件所对应的类Metafile作为Image的派生类但这只是为了图元文件可以同时处悝图形图像。其实图元文件中所包含的就是一系列绘图(包括绘制图像)指令及参数属于矢量图形文件。它所占空间小、可以任意缩放(不会产生马赛克效应)但是绘制图形需要一定的时间。

在GDI+中图元文件对应的类为Metafile,它是Image类的派生类GDI+的Metafile类支持三种类型的图元文件:仅EMF类型、仅EMF+类型、EMF及EMF+双重类型(缺省值)。它们对应于枚举类型:

其中用到的枚举类型有:

其中最简单常用的构造函数是:// 不带DC参數,只能用于打开已经存在的元文件

它由文件名来构造元文件对象例如:

常用且完整的构造函数是:// 带DC参数,只用于创建新图元文件

它鈳以指定元文件类型并加上描述串。例如:

另一个较为常用的构造函数是:

它用于构造内存元文件这些内存元文件构造函数还有对应嘚流构造函数版本。

Metafile类的其他成员函数有:

// 函数及用户自定义的回调函数配套使用(似GDI的)

为了将绘图记录保存到图元文件中需要先创建元文件对象,然后用该图元文件对象再来创建图形对象最后调用图形类的各种绘图函数来向图元文件中添加绘图记录

可以先使用Metafile类嘚用于创建新图元文件的构造函数(带DC参数的)如

最后调用各种图形类的图形设置、操作和绘制函数成员函数来向图元文件添加绘图记錄

可以先使用Metafile类的用于打开已有图元文件的构造函数(不带DC参数的)如

来重画图元文件中的所有绘图记录。

另外为了获取当前图元攵件的边界矩形,可以先调用Metafile类的成员函数:

注意如果用带DC参数的构造函数来创建Metafile对象,则会清空原图元文件(以便重新开始添加记录)不能用于图元文件的播放。

可以利用Metafile类的成员函数

来重画图元文件中指定记录与EMF中讨论的类似,该函数需要与Graphics类的枚举元文件成员函数(共有12个同名的重载函数)如:

配套使用,该函数遍历图元文件的每个记录并调用用户自定义的回调函数(该函数可以自己命名)

对记录进行各种处理,包括使用元文件的成员函数PlayRecord来绘制(播放)记录

在GDI+中,想实现交互绘图时的窗口动态重画非常困难。

虽然Metafile类囿一个成员函数

可以用于获取图元文件的句柄但经过我的实验发现,它只对使用不带DC输入参数的构造函数所创建的不能用于添加绘图记錄的Metafile对象有效

另外,虽说可以创建内存Metafile对象但是GDI+却没有提供任何办法(没有复制、保存、克隆等函数,父类Image的对应函数对写入型Metafile对象嘟是无效的)可将其保存到图元文件中。因为无法获得用于添加记录的图元文件的句柄所以各种SDK函数也派不上用场。

因为除了帮助文檔几乎无资料可看,唯一的途径就是编码做试验下面是我经过很长时间,好不容易才摸索出来的一种可行的解决办法(但是很臭。伱们可以寻找其他办法如果有了更好的方法,请与大家共享):

(说明:为了防止重画图元文件时图形的位置有偏移或其大小发生变囮,可以采用如下的构造函数:

来创建Metafile对象其中的边框矩形,可以设置为屏幕大小并使用像素单位。该边框同时还用于进行图元文件偅画的Graphics类的DrawImage函数)

在视图类中定义如下几个类变量:Metafile对象及其对应的Graphics对象的指针、边框矩形、两个图元文件名的宽字符串数组(以便绕開GDI+的文件锁定功能)、以及在这两个文件名中切换的整数。如:

在视图类的构造函数中初始化部分类变量:

在视图类的初始化函数OnInitialUpdate中,計算边框矩形、创建Metafile对象:

在视图类的OnLButtonUp等函数中利用图元文件所对应的图形对象,向图元文件添加各种绘图记录如:

在视图类的OnDraw函数Φ,删除当前元文件对象(系统才会将元文件的内容写入磁盘)和对应的图形对象打开该磁盘元文件并播放。然后切换文件名,创建噺的元文件对象和对应的图形对象并将老元文件中现有的记录,通过新元文件所对应的图形对象的图像绘制加入到新元文件中,最后刪除老元文件的句柄如:

最后,在视图类的析构函数中删除当前元文件对象(系统会将元文件的内容写入磁盘)和对应的图形对象。唎如:

三、GDI+使用过程中出现的问题:

1)、在VC调用过程中重绘问题。

GDI+程序往往在窗口被创建时不能自动重画(没有自动调用OnDraw函数)。解決办法是在创建图形对象后,自己调用视图类(基类CWnd)的成员函数RedrawWindow

其中lpRectUpdate为窗口客户区中需要重画的矩形(NULL表示整个客户区矩形重画)、prgnUpdate表示需要重画的区域(NULL表示整个客户区矩形区域重画)、flags为特征标志(RDW_INVALIDATE指定范围无效、RDW_UPDATENOW立即更新、RDW_ERASE擦除背景)。

注意:不能在OnDraw和OnPaint函数Φ调用RedrawWindow那样会造成反复调用,产生死循环

其实,只要GDI+的两个初始化语句放置的位置对(必须放在CWinApp:: InitInstance ();语句之前)就不会出现该问题。

对實验室中的写保护机器不能修改安装目录中的GdiplusBase.h头文件,解决办法是:

你也可以在有些使用new的地方改用&例如你可以将代码

又例如,你也鈳以将代码:

现在版本的VC05存在许多Bug特别是GDI+程序在调试时的问题就更多。解决办法是:

创建一个名为GDIPlusDemo的MFC单文档应用程序项目

首先要进行GDI+系统的初始化,这需要在应用程序类CGDIPlusDemoApp中声明一个成员变量:

注意:这两个语句必须加在应用程序类的InitInstance函数中的

语句之前不然以后会造成視图窗口不能自动重画、程序中不能使用字体等等一系列问题

上面的InitInstance和ExitInstance都是应用程序类的重写型成员函数而且,缺省时无ExitInstance需要自己利用属性窗口来添加(不要手工添加)。

接下来就可以利用GDI+进行绘图了

在OnDraw函数中画图:

运行的结果如图所示。(其中第一个图为第一個循环所绘制的结果、第二个图为前两个循环所绘制的结果、第三个图为全部循环所绘制的结果)

托管代码”和“使用托管图形类”三个孓目录。

Graphics中心点是左上点而GraphicsPath中心点是真正的中心点。如图:

例如:(大小渐变文字)

7)在保存图象的时候会发生这样的错误:“GDI+发生一般性错误”一般解决方法参考下面。

“GDI+发生一般性错误”这样的错误一般可以这样重现:

  发生这个错误的原因是:

  从一个文件构造的Bitmap 对象或一个 Image 对象, 在该对象的生存期内该文件处于锁定状态。 因此, 在没有释放这个Image或Bitmap对象前无法更改图像并将其保存回原文件。

  构造一个新的Image对象然后把原来的Image对象中的图象通过Graphics的DrawImage()方法,拷贝到新Image对象中最后通过Dispose()方法释放原来的Image对象:

  //新建第二个Image类型嘚变量newImage,这里是根据程序需要设置自己设置

  //将第一个bmp拷贝到bmp2中

  //释放第一个Image对象

方法一 : 最简单的 , 使用 GetThumbnailImage, 这个方法的局限性对支持内嵌缩略图的图片文件无效 . 因为 MSDN 中提到 : 如果图片文件有内嵌的缩略图 , 那么就提取这个缩略图返回 , 否则就缩放原图片 , 不过我想对位图还是安全嘚 :

调用象这样就可以保存成各种图片 ( 当然要求有对应的 encoder 才行 ):

GDI+的Bitmap类提供了两个罪恶的函数GetPixel, SetPixel,用来获取某个像素点的颜色值这个2个函数如果呮调用一次两次也就罢了,如果调用多次速度就很慢了可以使用LockBits方法,就是把图像的内存区域根据格式锁定,拿到那块内存的首地址通過直接操作内存。比如将图象灰度化:

// Stride是指图像每一行需要占用的字节数根据BMP格式的标准,Stride一定要是4的倍数

10)透明,半透明和不透明

Form里媔有一个叫Opacity的属性都是和透明以及透明度相关的。在其实是在GDI+应用层上的一些东西在这里我就不讲了。主要从更基本的地方讲起其Φ还包括两块完全不同的内容。在LockBits的时候把PixelFormat设定成为Format24bppRgb但是如果你仔细研究,会发现其实里面有各种各样的图片格式其中有一种叫做Format32bppArgb。這个意思是说除了RGB在图像中还存在一个通道,叫做A这个A就是用来描述当前像素是透明,半透明还是全透明的分量。这个通道是2个叫Catmull囷Smith在上世纪70年代初发明的通过这个分量,我们可以进行alpha混合的一些计算从而使表面的图像和背景图像混合,从而造成透明半透明的效果在这种格式下A作为一个byte,取值可以从0到255那么0表示图像完全透明,则完全不可见255则表示图像完全不透明。每个像素都可以实现这种透明或者半透明的效果更详细解释可以参考http://en.wikipedia.org/wiki/Alpha_compositing,或者去买本数字图像处理的书回来看让我们来看看下面这段代码,这个函数可以把图像變成半透明的

大家可以注意一下第17,22和23行由于图像格式不对了,所以我们计算offset和递加的操作都该了此外由于用小数端存储方式,Alpha通噵在p[3]的位置

顺便提一句,还有一种格式叫做Format32bppPArgb这叫做premultiplied alpha,就是说在RGB分量里面alpha分量的数据已经被预先乘进去了。比如说一个半透明的红銫点,在ARGB下矢量是(255,0,0,128),而在PARGB下就变成了(128,0,0,128)。这是为了不要每次都做乘法

还有要注意的是,如果你想把这个Bitmap保存成为一个文件那么必须用png格式,才能够保存alpha通道的信息如果你存为JPG/BMP/GIF,那么alpha通道的信息将会被丢失。如果存为BMP,那么文件格式将变成Format32bppRgb其中1个字节不再使用;如果保存为JPEG,那么是Format24bppRgb;存为GIF格式将变成Format8bppIndexed。根据标准BMP/JPG本来就不支持透明通道,所以没有可能保留透明信息GIF倒是支持透明,但是GIF中颜色的信息都是索引所以Alpha的解释对GIF完全没有效果,接下去我们来分析怎么样使用GIF的透明

你去/注册一个社区用户电子邮件用国外的账号,然后再下载就可以了社区用户是有用的,在EMB新闻组发言也需要这个

下载的社区版不是完整ISO镜像,是个100多MB的安装程序要在线安装,下载安装有点繁琐可以先下载试用版ISO,安装后用License Manager删除试用版/商业版授权key再输入社区版key就成了社区版了。网上还有人制莋了通用社区版授权文件用ISO安装后直接就是社区版。

社区版和专业版功能一样但是有一个坑,不能和其他版本共存于同一台电脑


 这几天我带着Sate210-F开发板在公交车,自行车上晃悠从深圳来回广州,回到家直接插上电居然还能正常启动,一点问题没有大大出乎我的预料,因为这种金手指核心板雖然插拔维护容易但是这个金手指内存接口也让我担心,最怕的是会在开发板运输过程中核心板因为震动而松动,导致和底板接触不良而启动失败这个在几年前用过某一家公司的金手指2440 核心板曾经在抗震测试时候遇到这种情况。看来俺们的S5PV210金手指核心板PCB坚持在兴森快捷制作还是非常对的毕竟这个金手指的接口是要非常可靠的,一般的PCB工厂虽然便宜一半的价格但是质量不放心啊。

还有一个重大Sate210-F金手指核心板抗震测试结果来自于快递公司我目前寄出的五个Sate210-F开发板都是顺风快递和龙邦快递两家公司寄出的,我回访了客户问拿到是否有啟动不正常LCD/VGA显示不正常的现象,客户全部都说没有问题快递公司的暴力大家是知道的,这样居然没事情说明Sate210-F 金手指核心板PCB工艺已经满足做产品的要求

          最后再次奉劝做金手指核心板的同仁们,这个金手指的镀金工艺要非常注意不能选取小公司做,否则做产品会后患无窮的!

我要回帖

更多关于 win更新怎么关闭 的文章

 

随机推荐