大家好啊,最近遇到一个问题,请大家帮忙解决一下,谢谢~
开发环境C++:
1.图像到转换到什么程度就可以用调用Api直接显示了?(我是菜鸟,原谅我的幼稚)
2.我已到了jpg,gif,png解码后的像素矩阵了,该怎么显示成图片,有的图片带透明色的,所以用SetPixl()不能全部画出啊?就算用这个函数画,效率很低啊!
PS:尽量不用GDI+,用C或者C++实现,也可以加我QQ306751504一起研究.多谢各位大神~~~~~
开发环境C++:
1.图像到转换到什么程度就可以用调用Api直接显示了?(我是菜鸟,原谅我的幼稚)
2.我已到了jpg,gif,png解码后的像素矩阵了,该怎么显示成图片,有的图片带透明色的,所以用SetPixl()不能全部画出啊?就算用这个函数画,效率很低啊!
PS:尽量不用GDI+,用C或者C++实现,也可以加我QQ306751504一起研究.多谢各位大神~~~~~
如果图像固定颜色固定大小, 你可以直接复制现有BMP图像的头, 24bit色,头大小是54字节,256灰度图像头一般是1078字节.
计算公式是:
输出色彩=前景色*Alpha/255+背景色*(255-Alpha)/255
举个例子来说,假设有一个点,其色彩的红色分量值为150,背景色的红色分量值为100,在进行输出时将透明度设置为200,这样,目标区域中最终显示的色彩将是:
150*200/255+100*(255-200)/255=139
用SetPixel速度当然慢,一般都是使用位图的ScanLine方法获取一行数据的指针,
然后逐个像素修改。。
tagBITMAP = record
bmType: Longint;
bmWidth: Longint;
bmHeight: Longint;
bmWidthBytes: Longint;
bmPlanes: Word;
bmBitsPixel: Word;
bmBits: Pointer;//位图数据
end;
Apng这格式我倒没听过,你指的不处理PNG的动画效果我倒有点不理解。。
像 GIF 这种格式的,直接用 GDI+ 绘制当前没有动画效果,
GDI+有个帧的概念,一般我们D用GDI+处理 GIF 都是定时器+取帧再逐帧绘制。