Direct2d绘制图片的问题
来源:互联网 发布:人事办公软件 编辑:程序博客网 时间:2024/05/19 12:36
网上看了不少资料,其中某篇是用笔刷画的。这样做仅适用于图片可以一次贴完的情况下。
其中注释掉的部分是原来的实现。用在这里算是笔刷来绘制的备份吧。如果图片并不可以重复使用的话(比如用来铺地板),那么还是每次都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);//恢复transformm_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());}
其中注释掉的部分是原来的实现。用在这里算是笔刷来绘制的备份吧。如果图片并不可以重复使用的话(比如用来铺地板),那么还是每次都drawbitmap比较好。
图片画刷,只是微软表明,有这个功能罢了。当然,他可以通过辐射,或者其他东西来实现很特殊的效果。这就需要摸索了。
正常情况下,用于界面的贴图,2d地图的绘制,都使用drawbitmap比较好。
- Direct2d绘制图片的问题
- Direct2d绘制图片的问题
- Direct2D WIC绘制图片
- Direct2D绘制的MFC控件
- Direct2D绘制的MFC控件
- Direct2D 几何图形绘制基础
- Direct2D DirectWrite绘制文字
- 使用WIC将Direct2D绘制的图形保存为文件
- 使用WIC将Direct2D绘制的图形保存为文件
- Direct2d CPU占用过高的问题。
- Direct2d CPU占用过高的问题
- Direct2D图像显示不全的问题
- [Direct2D]图片处理
- Direct2D图片处理
- html5 canvas绘制图片模糊的问题
- html5 canvas绘制图片模糊的问题
- Direct2D教程(十)绘制文本
- Direct2D的Brush操作
- Design Pattern Factory Method
- Flex 小数
- Tomcat时间问题解决
- 阶乘的精确值 大数问题
- WINCE中只允许程序运行一个实例
- Direct2d绘制图片的问题
- scala中泛型类型中的一元操作符
- 如何使用Core Plot绘制直方图和折线图
- 多线程基础知识
- VS2008 VSTS 删除死锁项 TFC
- WinCE 5.0 WIFI 无线网卡的配置和建立连接
- android SDK升级SDK后出现installing .APK时停住不动的有关问题
- Android 中反编译APK的方法,留着自己用
- 网络间通信socket传输任意格式任意大小的文件