wxWidgets的图像能力

本文介绍了wxWidgets库中wxBitmap和wxImage两类的图像处理功能,包括初始化alpha通道、判断透明度、旋转图像、设置半透明效果、使用wxMask、Graphics Context的抗锯齿和alpha混合,以及OpenGL支持。此外,还提到了图像保存和DC的用户缩放方法,提供了一系列参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这类支持还是相当的多的,


分在两个类里面:wxBitmap 和 wxImage。两者的关系是:wxImage更倾向于逻辑层的组织,可以有loadFile这样的方法来从磁盘读取图像文件。wxBitmap则是在绘制的时候需要用到的,dc只能通过这个来得到图像信息。这两者相辅相成,所以,wxBitmap::ConvertToImage()可以把一个bitmap转化成image,而wxBitmap有构造函数可以直接从一个wxImage构造出一个wxBitmap。


1、wxImage::InitAlpha()


这个方法能给没有alpha的image初始化出alpha通道出来,


2、wxImage::IsTransparent(int x, int y, unsigned char threhold = 128)


这个方法判断x,y处的像素是否是透明的。


3、wxImage::Rotate(angle, centerofpoint, interpolation)


让图片绕某个点旋转,第三个参数决定是用插值算法来给新的图像像素来赋值,还是直接用0。用0的话可以调试用,可以看到新的图像的框架。


非常需要注意的是,rotate后的图片,实际上是一个宽度和高度都大于等于原图的图片(仍然是矩形),rotate代码会在原图的基础上填充黑色作为填充色(如果有mask,则是mask颜色)。所以,如果要处理图像编辑软件,想实现让用户在原来的图片位置按中心旋转的效果,必须考虑实际上图片大小变化了,需要移动相应的距离来让用户感受到图像绕中心在旋转。这个偏移是:


(rotateWidth - originalWidth) / 2;


4、wxImage::SetAlpha (unsigned char *alpha = NULL,bool static_data = false)

这个可以给本来没有alpha通道的图像加上一个alpha通道,绘制的时候可以实现半透明效果。


类似方法:

void SetAlpha(int x, int y, unsigned c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值