bitblt(bitblt透明)

http://www.itjxue.com  2023-02-10 03:28  来源:未知  点击次数: 

VB.NET中的BitBlt 问题

可能这是我见过的最成功VBnet的BITBLT示例。

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Me.PictureBox1.Image = Image.FromFile("E:\程序语言\VBpic\输入文件名.BMP")

End Sub

运行,点击你的Button2按钮(窗体Form1上加两个图片框和一个命令按钮搞成Button2)

PictureBox2就有受控的图片出来了。

求助,关于CDC:BitBlt的使用

BitBlt 是位块传送,BitBlt( HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop);从源dc的 nXSrc,nYSrc坐标开始,拷贝图像数据到目的dc的 nXDest,nYDest 坐标处,拷贝宽度和长度是 nWidth, nHeight;,如果原dc的范围达不到nWidth,nHeight的范围,那部分数据不处理。StretchBlt是拉伸图像拷贝。参数中比bitblt多了, nWidthSrc, nHeightSrc,源dc的高度和宽度。这个是映射模式,从源dc的,nXOriginSrc,nYOrignSrc映射到目标dc的nXOriginDest, nYOriginDest。源dc的范围和目标dc的范围执行拉伸隐射。可以看成一个空间几何的四棱椎台体。从一个截面映射到另外一个截面。如果2个截面面积相等,那就是1对1的数据拷贝,如果不是,就按照比例计算拟合数据。这个需要 SetStretchBltMode 设置拉伸拷贝的数据复合模式。也就是数据拟合的计算方法。相同的参数 DWORD dwRop 表示光栅计算模式,从源数据-》目标数据的复合,比如拷贝、按位与或等二进制运算。

bitblt函数怎么用啊?

bitblt:

该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。

用法参数:

hDestDC:指向目标设备环境的句柄。

x:指定目标矩形区域左上角的X轴逻辑坐标。

y:指定目标矩形区域左上角的Y轴逻辑坐标。

nWidth:指定源在目标矩形区域的逻辑宽度。

nHeight:指定源在目标矩形区域的逻辑高度。

hSrcDC:指向源设备环境的句柄。

xSrc:指定源矩形区域左上角的X轴逻辑坐标。

ySrc:指定源矩形区域左上角的Y轴逻辑坐标。

dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。

下面列出了一些常见的光栅操作代码:

BLACKNESS:表示使用与物理调色板的索引0相关的色彩来填充目标矩形区域,(对缺省的物理调色板而言,该颜色为黑色)。

DSTINVERT:表示使目标矩形区域颜色取反。

MERGECOPY:表示使用布尔型的AND(与)操作符将源矩形区域的颜色与特定模式组合一起。

MERGEPAINT:通过使用布尔型的OR(或)操作符将反向的源矩形区域的颜色与目标矩形区域的颜色合并。

NOTSRCCOPY:将源矩形区域颜色取反,于拷贝到目标矩形区域。

NOTSRCERASE:使用布尔类型的OR(或)操作符组合源和目标矩形区域的颜色值,然后将合成的颜色取反。

PATCOPY:将特定的模式拷贝到目标位图上。

PATPAINT:通过使用布尔OR(或)操作符将源矩形区域取反后的颜色值与特定模式的颜色合并。然后使用OR(或)操作符将该操作的结果与目标矩形区域内的颜色合并。

PATINVERT:通过使用XOR(异或)操作符将源和目标矩形区域内的颜色合并。

SRCAND:通过使用AND(与)操作符来将源和目标矩形区域内的颜色合并。

SRCCOPY:将源矩形区域直接拷贝到目标矩形区域。

SRCERASE:通过使用AND(与)操作符将目标矩形区域颜色取反后与源矩形区域的颜色值合并。

SRCINVERT:通过使用布尔型的XOR(异或)操作符将源和目标矩形区域的颜色合并。

SRCPAINT:通过使用布尔型的OR(或)操作符将源和目标矩形区域的颜色合并。

WHITENESS:使用与物理调色板中索引1有关的颜色填充目标矩形区域。(对于缺省物理调色板来说,这个颜色就是白色)。

dwRop Values

From wingdi.h:

#define BLACKNESS 0x42

#define DSTINVERT 0x550009

#define MERGECOPY 0xC000CA

#define MERGEPAINT 0xBB0226

#define NOTSRCCOPY 0x330008

#define NOTSRCERASE 0x1100A6

#define PATCOPY 0xF00021

#define PATINVERT 0x5A0049

#define PATPAINT 0xFB0A09

#define SRCAND 0x8800C6

#define SRCCOPY 0xCC0020

#define SRCERASE 0x440328

#define SRCINVERT 0x660046

#define SRCPAINT 0xEE0086

#define WHITENESS 0xFF0062

关于C++中BitBlt()函数的问题。

参照msdn给出的关于CDC::BitBlt

的解释BOOL

BitBlt(

int

x, int

y, int

nWidth,

int

nHeight,

CDC*

pSrcDC,

int

xSrc,

//指定原位图要绘制的左上角x坐标

int

ySrc,

//指定原位图要绘制的左上角y坐标 DWORD

dwRop

//绘制方式:你用的是srccopy直接绘制 );例如原图为200*200注意中间的分割线如下代码pDC-BitBlt(0,0,200,200,dcMemory,0,-100,SRCCOPY);

pDC-BitBlt(0,0,200,200,dcMemory,0,100,SRCCOPY);运行结果:也就是说pDC-BitBlt(0,0,200,200,dcMemory,0,-100,SRCCOPY);的显示效果为:pDC-BitBlt(0,0,200,200,dcMemory,0,100,SRCCOPY);的显示效果为:他们拼接的效果即为:

(责任编辑:IT教学网)

更多

推荐广告特效文章