IPicture要注意的几个问题

IPicture

IPicture

 

keywords:IPicture,COM
abstract:IPicture接口应注意的几个问题

 

打开文件的类型

可以打开(.BMP .DIB .EMF .GIF .ICO .JPG .WMF)

图片的长度单位

图片的长宽单位是“百分之一毫米” ( nWidth / 100 = xxx 毫米 )

x y轴方向

x y轴方向如图(GDI默认y轴向下)

	y ^
	  |
	  +-------------+
	  |    width    |
	  |             |height
	  |   Picture   |
	  |             |
	--+-------------+-->
	  |(0,0)           x
		
单位转换

转成像素单位 dc.GetDeviceCaps(LOGPIXELSX) * nWidth/100/25.4

代码示例
	OLE_XSIZE_HIMETRIC nWidth;
	OLE_YSIZE_HIMETRIC nHeight;
	m_spPic->get_Width(&nWidth);
	m_spPic->get_Height(&nHeight);
		
	CClientDC dc(this);
	int nWidthPix  = dc.GetDeviceCaps(LOGPIXELSX)*nWidth/2540.0;//换算成像素
	int nHeightPix = dc.GetDeviceCaps(LOGPIXELSY)*nHeight/2540.0;
		
	CRect rc;
	GetDlgItem(IDC_STC_PIC)->GetWindowRect(&rc);
	ScreenToClient(&rc);
	LONG ox = rc.left + rc.Width()/2  - nWidthPix/2;
	LONG oy = rc.top  + rc.Height()/2 - nHeightPix/2;
	CRect rc2(ox, oy, ox+nWidthPix, oy+nHeightPix);
		
	m_spPic->Render(dc.m_hDC, ox, oy, nWidthPix, nHeightPix, 0, nHeight, nWidth, -nHeight, &rc2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值