【发布时间】:2013-04-29 18:48:43
【问题描述】:
在使用 VB 6.0 多年后,我才刚刚开始使用 VB.net,我想我会开始使用一些图形。
只是为了好玩,我正在使用 BitBlt 来绘制我作为资源加载的位图并将其绘制在表单上。我可以从图片框中加载现有图像并对其进行 bitblt 处理,效果很好。我也可以从资源中加载位图并将其存储到图片框中,但是当我获取位图时,将其转换为 GDI 图形对象并将其 BitBlt 到窗体上,我得到的只是一个与位图。
这是我的代码:
Dim srcBmp As New Bitmap(Me.GetType, "colorwheel.bmp")
Dim drect As New Rectangle(0, 0, 233, 233)
'srcGrp = PictureBox1.CreateGraphics 'This works.
srcGrp = Graphics.FromImage(srcBmp) 'This doesn't
targetGrp = Me.CreateGraphics 'destination graphics
srcHdc = srcGrp.GetHdc
TargetHdc = targetGrp.GetHdc
BitBlt(TargetHdc, 0, 0, 233, 233, srcHdc, 0, 0, SRCCOPY)
srcGrp.ReleaseHdc(srcHdc)
targetGrp.ReleaseHdc(TargetHdc)
targetGrp.Dispose()
srcBmp.Dispose()
srcGrp.Dispose()
我想使用 bitblt 的原因是 a) 我以前用过它,所以它是我的第一选择。 b)我知道可以使用黑白蒙版将某些区域遮盖为透明,这正是我所需要的。 b) 图形可能会频繁移动。
有没有更好的方法在窗体或图片框上绘制具有透明背景的图形?例如带有 Alpha 通道的 png?
【问题讨论】:
-
我不认为有办法在这里碰线? :)
标签: vb.net graphics bitmap gdi bitblt