码迷,mamicode.com
首页 > 其他好文 > 详细

[ATL/WTL]_[中级]_[使用GDIPlus剪切和缩放图片]

时间:2015-06-14 20:07:04      阅读:389      评论:0      收藏:0      [点我收藏+]

标签:c++   gdiplus   剪切   缩放   wtl-atl   


场景:

1. 缩放图片,不用多说,就是需要缩略图和画在界面上这类。

2. 剪切,不用多说,就是剪切一部分图片用于绘制控件背景之类.

3. wxWidget的wxImage都是自带这些功能的直接方法的.

Gdiplus::Bitmap* CutImage(Gdiplus::Image* source,int x,int y,int width,int height)
{
	Gdiplus::Rect zoomRect(0, 0, width,height);
	Gdiplus::Bitmap* pImageScale_ = new Gdiplus::Bitmap(zoomRect.Width, zoomRect.Height);

	Gdiplus::RectF rf(x,y,width,height);
	Gdiplus::TextureBrush brush(source,rf);

	Gdiplus::Graphics graphicsScale(pImageScale_);
	graphicsScale.FillRectangle(&brush, zoomRect);
	return pImageScale_;
}

Gdiplus::Image* ScaleImage(Gdiplus::Image* source,int width,int height)
{
	Gdiplus::Rect zoomRect(0, 0, width,height);
	Gdiplus::Bitmap* pImageScale = new Gdiplus::Bitmap(zoomRect.Width, zoomRect.Height);
	Gdiplus::Graphics graphicsScale(pImageScale);
	Gdiplus::TextureBrush brush(source);
	graphicsScale.ScaleTransform((Gdiplus::REAL)((Gdiplus::REAL)zoomRect.Width / (Gdiplus::REAL)source->GetWidth()),
		(Gdiplus::REAL)((Gdiplus::REAL)zoomRect.Height / (Gdiplus::REAL)source->GetHeight()));
	graphicsScale.FillRectangle(&brush, zoomRect);
	return pImageScale;
}


[ATL/WTL]_[中级]_[使用GDIPlus剪切和缩放图片]

标签:c++   gdiplus   剪切   缩放   wtl-atl   

原文地址:http://blog.csdn.net/infoworld/article/details/46492803

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!