RT,使用Resize只能做到裁剪而不是拉伸,不想一直使用loadimage,有没有其他的函数可以实现这个功能?不然就只能自己造轮子了
举报
EasyX如何实现图片缩放
举报
可以使用 GDI 函数 StretchBlt,示例如下:
#include <graphics.h>
#include <conio.h>
int main()
{
initgraph(640, 480);
// 建立 img 对象作为源图象
IMAGE img(40, 40);
SetWorkingImage(&img);
HDC imgDC = GetImageHDC(&img); // 获取源图像的 DC
// 在源图像上画一个圆
circle(20, 20, 8);
// 主窗口作为目标位置
HDC mainDC = GetImageHDC(NULL); // 获取主窗口的 DC
SetStretchBltMode(mainDC, STRETCH_HALFTONE); // 设置拉伸贴图模式为抗锯齿
// 如果不设置,默认贴图模式为临近颜色,效果差,性能高
// 将源图像贴图到目标位置
StretchBlt( mainDC, // 目标 DC
100, 100, // 目标位置的坐标
30, 30, // 目标位置的长宽
imgDC, // 源 DC
0, 0, // 源位置的坐标
40, 40, // 源位置的长宽
SRCCOPY); // 贴图的光栅模式
_getch();
closegraph();
return 0;
}
举报
其实自己造轮子也挺好呀,
打完代码的感觉十分不错。