Fas*_*tAl 3 .net vb.net gdi+ alpha transparent
我有一个掩码位图(bmpMask),我正在绘制到目标位图(bmpDest).两个位图都有alpha通道,但已经充满了不透明的内容.
我想要做的是在bmpMask上使用GDI +'Draw ...'方法生成透明区域,以便当我在其上绘制bmpMask时bmpDest显示出来.
当然gMask.DrawLine(Pens.Transparent, 0, y, wMax, y)导致bmpMask没有变化,因为GDI +按设计工作,透明时不绘制任何东西.即使使用半透明颜色,也只更新bmpMask像素的r,g,b值.
但我想要做的是发出一个draw方法,它将改变bmpMask的alpha通道,使其在绘制到bmpDest时是透明的.我知道我可以使用SetPixel或更快速的不安全或Marshall替代品来做到这一点,但这会导致更复杂的解决方案.谢谢.
我从来没有试过尝试Dan的解决方案,所以我不想放弃它,但这正是我想要的:
' (setting composting mode is the key to getting the transparent
' line to actually result in setting the pixels to transparent-
' instead of just not drawing anything 'because it's transparent dummy' -
' because it turns off the 'math' that is done to cause transparent
' image drawing to occur and just verbatim copies the bits).
g1.CompositingMode = Drawing2D.CompositingMode.SourceCopy
g1.DrawLine(Pens.Transparent, 0, y, wMax, y)
g1.CompositingMode = Drawing2D.CompositingMode.SourceOver
Run Code Online (Sandbox Code Playgroud)
CompostingMode是钥匙!我终于试图在我的程序中再次修复这个缺点,谷歌搜索出现了这个与我搜索的内容无关的项目(嘿,谷歌可以读懂你的想法).
Graphics.DrawImage对于更大的图像来说太慢了吗?
精彩!现在10块钱说,整个世界上没有人读过这个.755
| 归档时间: |
|
| 查看次数: |
1809 次 |
| 最近记录: |