基础:位图和像素位

Windows Presentation Foundation (WPF) 的保留模式图形系统给 Windows 图形编程带来了巨 大变化。程序不再需要在系統要求时重新在屏幕上创建自己的可视外观。这个复合系统会保留所有图形数 字,并将其安排到整个可视外观中。

保留模式图形确实能够简化工作流程,但是对于 Windows 编程人员来说,“简便”本身并 非是首要考虑目标。实际上,正是保留模式图形系统与通知机制(依赖关系属性)的组合,使 WPF 的灵 活性和功能得以展现。图形对象(如路径和画笔)看起来仍“存在”于复合系统中,并继续响 应属性更改和图形转换,因此允许对这些对象进行数据绑定和设置动画效果。

最近,我发现 WPF 位图具有类似的动态性质:呈现的位图仍会响应更改 — 不仅能够响应图形转换(众所周知),还 能响应位图中实际像素位的更改。

展现这种动态响应的两个位图类是 RenderTargetBitmap 和 WriteableBitmap,它们是由 BitmapSource 派生的 9 个类中的成员;BitmapSource 是一个抽象类,是 WPF 中的所有位图支持的基础。程序可以将其中某个位图对象与图像元素一起显示、使用 ImageBrush 类 将其制成一支平铺画笔,或者使用 ImageDrawing 类将其用作大型绘图(可能混有矢量图形)的一部分, 但无论以哪种方式使用,都不会在呈现位图后就将其忽略。相反,位图仍然位于可视复合系统中,并继续 响应应用程序更改。

使用 RenderTargetBitmap

RenderTargetBitmap 是一个位图,通过将 Visual 类型的对象传输到其表面即可进行有效绘制。要创建 RenderTargetBitmap 类型的新对象,唯一 的方法就是使用构造函数,并需要向该构造函数提供位图的像素尺寸、以每英寸点数表示的水平和垂直分 辨率,以及 PixelFormat 类型的对象。

稍后,我将详细介绍 PixelFormat 结构和相关的静态 PixelFormats 类。要创建 RenderTargetBitmap 类型的对象,您必须将 PixelFormats.Default 或 PixelFormats.Pbgra32 用作 RenderTargetBitmap 构造函数的最后一个参数。无论使用哪一个,都可以 创建一个 32 位/像素的透明位图。

最初,RenderTargetBitmap 对象是完全透明的。然后,您可 以使用 Visual 类型的对象(包括从 Visual 派生的类,如 FrameworkElement 和 Control)来调用 Render 方法,从而在此位图上进行绘制。通过调用 Clear,可还原完全透明的图像。如果当前显示的是 该位图,则上述调用将立即反映在显示的位图中。

时间: 2024-09-17 04:20:03

基础:位图和像素位的相关文章

Windows界面编程(1) 位图背景与位图画刷

可以通过WM_CTLCOLORDLG消息来设置对话框的背景,MSDN上对这个消息的说明如下: The WM_CTLCOLORDLG message is sent to a dialog box before the system draws the dialog box. By responding to this message, the dialog box can set its text and background colors using the specified display

python-关于mysql中的位图索引和位片索引问题

问题描述 关于mysql中的位图索引和位片索引问题 老师给了一个作业要求利用其他语言例如Python或者C++来实现位图索引,但是一直教的就是mysql,没要办法建位图索引啊.不知道怎么办才好了,求大神指导... 解决方案 Mysql 索引 解决方案二: http://www.cnblogs.com/yuerdongni/p/4255395.html

应用-对话框资源加载位图,MFC位图加载显示问题

问题描述 对话框资源加载位图,MFC位图加载显示问题 在一个MFC应用程序中,对话框资源加载位图并显示,但是最终显示的时候,位图却显示不全,这是什么原因,有什么解决办法吗? 解决方案 你是怎么加载的位图?是写在OnInitDialog还是OnPaint,确保写在后者. 另外你的窗体是否足够大,容纳位图,以及上面有没有别的控件挡住? 解决方案二: 是怎么显示的?是不是pictur空间尺寸太小了? 解决方案三: 图片控件的大小是怎么控制的,是不是图片控件大小设置太小了.导致图片尺寸显示不出来 解决方

基础才是重中之重~位的运算

位运算无论在C#,VB还是在T-SQL里都有对它支持,位运算即对数值类型的每位进行计算,对于程序里,你可以使用十进制,十六进制,二进制对它进行位运算,事实上无论你使用哪种进制,对于计算机来说最后都为把它转换成二进制(0,1)的形式,因为二进制为简单,呵呵. 下面是关于位运算的表格 运算符号 位运算操作符 运算对象类型 运算结果类型 对象操作数 实例 ~ 非运算 整型 整型 1个 ~x & 与运算 2个 x & y | 或运算 2个 x | y ^ 异或运算 2个 x ^ y <<

IOS中使用像素位图(CGImageRef)对图片进行处理

IOS中对图片进行重绘处理的方法总结 一.CGImageRef是什么 CGImageRef是定义在QuartzCore框架中的一个结构体指针,用C语言编写.在CGImage.h文件中,我们可以看到下面的定义: ? 1 typedef struct CGImage *CGImageRef; CGImageRef 和 struct CGImage * 是完全等价的.这个结构用来创建像素位图,可以通过操作存储的像素位来编辑图片. QuartzCore这个框架是可移植的. 二.CGImageRef相关的

bmp-关于BMP24位位图显示的问题

问题描述 关于BMP24位位图显示的问题 VC写的数字图像显示,显示出来的图像是歪的,接着再点保存的话就会变成其他格式的文件,是为什么?(新手求教), 解决方案 24位位图转4位彩色图(BMP)实现1位,4位,8位,24位BMP位图的互相转换的方法,32位转24位把24位和32位BMP位图转为灰色bmp位图 解决方案二: 贴出你的代码片段才知道怎么回答你

photoshop颜色基础知识和配色理论解析分享

给各位photoshop软件的使用者们来详细的解析分享一下颜色基础知识和配色理论. 解析分享: 颜色基础知识 打开你的Photoshop,新建文档,有两个非常重要的选项,一个是颜色模式(位图/灰度/RGB颜色/CMYK颜色),一个是位数(1位/8位/16位/32位).   什么是颜色模式? 新建一个文档,选择颜色模式为:位图和1位(为什么其它位不能选择?请往下看).   选择"窗口"-"颜色"(或者直接按F6),调出颜色面板:   把K值(灰度值用K表示)拉到50%

bmp 缩放代码(BMP位图任意放大 和缩小)_C 语言

前几天碰上需要对bmp位图进行缩放的功能, 调用API函数,虽然能实现位图缩放,但是对有放大的效果好,缩小会造成失真,图像上有花点,让人难以接受 ,因为本人以前学易语言,易语言有一段代码,对bmp图像缩放效果非常 好, 昨天抽空,把它翻译成c++代码了,经验证,非常 好用,帖上代码: 这一段是对宽度进行缩放: void __stdcall bmpsetH(unsigned char *bitmap,int h,unsigned char *bitmap2) { int i,j,k,bitmapH

《Adobe After Effects CC完全剖析》——第1部分 工作基础 第1章 在After Effects中的合成 一个基本的合成

第1部分 工作基础 第1章 在After Effects中的合成 这是一本关于使用Adobe After Effects创建视觉特效的书,Adobe After Effects是世界上使用最广泛的合成应用程序.这个软件可以帮助你使用截然不同的元素创建令人信服的.梦幻般的动态图像,使你的工作事半功倍.在本书的第一部分中提供了一种快速学习的方法(针对初学者而言),或者可以调整你在After Effects中的工作流程(针对精通After Effects的人而言). 有效的视觉特效合成将会同时使用到你