我有两个bitmap想实现按一定透明度来融合,使用以下代码
nToX := Min(X + Src.Width, Dest.Width);
nToY := Min(Y + Src.Height, Dest.Height);
bf.BlendOp := AC_SRC_OVER;
bf.BlendFlags := 0;
bf.SourceConstantAlpha := Alpha mod 255;
bf.AlphaFormat := 0 ;
AlphaBlend(Dest.Handle, X, Y, nToX, nToY, Src.Handle, 1, 1, nToX - X, nToY - Y, bf);
其中X, Y就是Src要在Dest上画的起始点坐标,nToX, nToY这个是右下解的坐标.可是为什么我执行都不成功呢?
我的系统是windows2003这个API应该是支持的呀.
不知道大家能不能给我指出一下问题所在?
nToX := Min(X + Src.Width, Dest.Width);
nToY := Min(Y + Src.Height, Dest.Height);
bf.BlendOp := AC_SRC_OVER;
bf.BlendFlags := 0;
bf.SourceConstantAlpha := Alpha mod 255;
bf.AlphaFormat := 0 ;
AlphaBlend(Dest.Handle, X, Y, nToX, nToY, Src.Handle, 1, 1, nToX - X, nToY - Y, bf);
其中X, Y就是Src要在Dest上画的起始点坐标,nToX, nToY这个是右下解的坐标.可是为什么我执行都不成功呢?
我的系统是windows2003这个API应该是支持的呀.
不知道大家能不能给我指出一下问题所在?
解决方案 »
- 关于Icon的问题!
- 如何动态创建计算字段?
- 如何利用delphi来使桌面图标文字透明呢?【高分请教高高手……】
- 求救:QReport打印的问题?
- 请问怎样知道Mediaplay控件是或处于播放状态
- 各位,请问怎么用HOOK找window所打开的窗体的类名,比如QQ的‘#32770’急急急....
- 哪里能找到漂亮的Dephi上用OpenGl编写的东东
- TEdit文本框的类型转换!
- Mifare+IC 写卡器调用DLL出错的问题.
- 各位,这里有没有认识任良的,或者他本人在这? 好像这个人很厉害啊,最近又拿了3000圆的"建昊奖学金". 太牛了!!!!!
- 大家帮忙看看这个错误提示什么意思
- 报表问题
首先,要能取得上层与下层颜色的 RGB三基色,然后用r,g,b 为最后取得的颜色值;r1,g1,b1是上层的颜色值;r2,g2,b2是下层颜色值r = r1/2 + r2/2;g = g1/2 + g2/2;b = b1/2 + b2/2;以上为50%透明。若要使用不同的透明度用以下算法(ALPHA=透明度):(50%以下)r = r1 - r1/ALPHA + r2/ALPHA;g = g1 - g1/ALPHA + g2/ALPHA;b = b1 - b1/ALPHA + b2/ALPHA;(50%以上)r = r1/ALPHA + r2 - r2/ALPHA;g = g1/ALPHA + g2 - g2/ALPHA;b = b1/ALPHA + b2 - b2/ALPHA;
Src.Handle
=>
Dest.Canvas.Handle
Src.Canvas.Handle参数类型是什么?HDC,而不是HBITMAP。这种东西查查MSDN,很简单。还有种可能,你根本就没调到GDI
AlphaBlend
=>
Windows.AlphaBlend为什么一定要用GDI/GDI+?又没效率,又不够灵活。