作者:banli | 来源:互联网 | 2023-05-16 10:19
关于GDI+,如何缩放Image/Bitmap,注意,并不是在画的时候,而是创建完成,画之前,对内存的信息进行缩放。多谢了
4 个解决方案
Graphics graphics(pDC->m_hDC);
//装入图形文件
Image image(ToWChar(strOpenFileName.GetBuffer(strOpenFileName.GetLength())));
//得到缩放后的图形
Image *pimagethumb = image.GetThumbnailImage(image.GetWidth()+100,image.GetHeight()+100);
//计算画的区域
Point destPoints[3] ={Point(image.GetWidth(), 0),
Point(image.GetWidth()+pimagethumb->GetWidth(), 0),
Point(image.GetWidth(), pimagethumb->GetHeight())
};
//画出来
Point* pdestPointst = destPoints;
graphics.DrawImage(pimagethumb, pdestPointst, 3);
WCHAR* ToWChar(char * str)
{//在GDI+中,有关字符的参数类型全部都是WCHAR类型
//该函数是将传统字符串进行转换
static WCHAR buffer[1024];
wcsset(buffer,0);
MultiByteToWideChar(CP_ACP,0,str,strlen(str),buffer,1024);
return buffer;
}
我又发现一个问题,就是放大后,如果是带有透明色的图片,在画的时候,图像的边缘不正确,有一圈透明色包围着图像,为什么?如何去除?好像以前我放大画图像的时候也有类似的情况,如何去除GDI+中自动柔化边缘的部分?