Direct2d绘制图片的问题
2012-04-25 14:12
375 查看
网上看了不少资料,其中某篇是用笔刷画的。这样做仅适用于图片可以一次贴完的情况下。
若想要贴图片的一部分 必须要用到rendertarget的 drawbimap方法。而不是用笔刷来画。
如下的函数比较符合人类适用习惯
其中注释掉的部分是原来的实现。用在这里算是笔刷来绘制的备份吧。如果图片并不可以重复使用的话(比如用来铺地板),那么还是每次都drawbitmap比较好。
图片画刷,只是微软表明,有这个功能罢了。当然,他可以通过辐射,或者其他东西来实现很特殊的效果。这就需要摸索了。
正常情况下,用于界面的贴图,2d地图的绘制,都使用drawbitmap比较好。
若想要贴图片的一部分 必须要用到rendertarget的 drawbimap方法。而不是用笔刷来画。
如下的函数比较符合人类适用习惯
void D2DTexture::Draw(const D2D1_RECT_F& rcDest, const D2D1_RECT_F& rcSrc) { //计算缩放值 //使用了默认参数,使用整张图片 D2D1_RECT_F rf= rcSrc; if (rf.right - rf.left == 0) { D2D1_SIZE_F sf = m_pBitmap->GetSize(); if (sf.width == 0 || sf.height == 0) return ; rf.right = sf.width; rf.bottom = sf.height; } /*float dstWidth = rcDest.right - rcDest.left; float srcWidth = rf.right - rf.left; float dstHeight = rcDest.bottom - rcDest.top; float srcHeight = rf.bottom - rf.top; float scaleX = dstWidth / srcWidth; float scaleY = dstHeight / srcHeight; // Translate for the bitmap brush. D2D1::Matrix3x2F final,trans,scale; trans= D2D1::Matrix3x2F::Translation(D2D1::SizeF(rcDest.left, rcDest.top)); scale=D2D1::Matrix3x2F::Scale(scaleX,scaleY); final = scale*trans; m_pRenderTarget->SetTransform(final);*/ m_pRenderTarget->DrawBitmap(m_pBitmap, rcDest, 1,D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR, rf); // Demonstrate a bitmap brush. //m_pRenderTarget->FillRectangle(&rf, m_pBitmapBrush); //恢复transform m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity()); }
其中注释掉的部分是原来的实现。用在这里算是笔刷来绘制的备份吧。如果图片并不可以重复使用的话(比如用来铺地板),那么还是每次都drawbitmap比较好。
图片画刷,只是微软表明,有这个功能罢了。当然,他可以通过辐射,或者其他东西来实现很特殊的效果。这就需要摸索了。
正常情况下,用于界面的贴图,2d地图的绘制,都使用drawbitmap比较好。
相关文章推荐
- Direct2d绘制图片的问题
- Direct2D WIC绘制图片
- Direct2D WIC绘制图片
- GID+ DrawImage 函数绘制使图片变大的问题
- canvas 使绘制的图片在div 居中显示 ,解决绘图模糊问题
- html5 canvas绘制图片模糊的问题
- iOS:quartz2D绘图(显示绘制在PDF上的图片)
- Android-动画绘制2D绘制和硬件加速的不支持问题
- openLayers 4 canvas图例绘制,canvas循环添加图片,解决图片闪烁问题
- Canvas-drawImage 绘制图片模糊问题
- 在WinCE下绘制半透的效果要注意的问题+WINCE 下创建动态显示图片窗口
- 关情纸尾-----Quartz2D-绘制富文本,绘制图片.
- WinRT使用direct2d自由旋转图片
- 在JSP页面中使用JFreeChart绘制2D饼图图片
- [Direct2D]图片处理
- 是什么问题,为什么绘制不了图片?
- Direct2D (5) : 绘制自定义图形
- iOS开发UI篇—Quartz2D复杂图形绘制(三) 图片文字,进度条,饼形图,小黄人
- Direct 9.0c 中使用ID3DXSprite来绘制2D动画
- 【QT】使用QPainter类drawImage函数绘制透明图片的问题