举报

EasyX如何实现图片缩放

1

RT,使用Resize只能做到裁剪而不是拉伸,不想一直使用loadimage,有没有其他的函数可以实现这个功能?不然就只能自己造轮子了

ava
无名氏

2020-3-22

举报
3

可以使用 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;
}
ava
xiongfj ◑◑

2020-3-22

举报
0

其实自己造轮子也挺好呀,

打完代码的感觉十分不错。

ava
Lost

2020-3-30

技术讨论社区