Direct2d绘制图片的问题

来源:互联网 发布:人事办公软件 编辑:程序博客网 时间:2024/05/19 12:36
网上看了不少资料,其中某篇是用笔刷画的。这样做仅适用于图片可以一次贴完的情况下。

若想要贴图片的一部分 必须要用到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比较好。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩不喜欢吃蔬菜水果怎么办 孩子不愿意学琴怎么办 不喜欢吃水果蔬菜怎么办 小孩不喜欢吃水果怎么办 校长想整老师怎么办 和老师吵架了怎么办 孩子初中转学学籍怎么办 孩子上初中学籍怎么办 18孩子不想上学怎么办 宝宝不爱吃蔬菜怎么办 孩子总丢东西怎么办 孩子经常丢东西怎么办 孩子总是丢东西怎么办 孩子负能量太多怎么办 不要孩子老了怎么办 父母都内向孩子怎么办 孩子不喜欢读课外书怎么办 学习学不进去怎么办 小孩停不下来怎么办 小孩老爱玩不爱学习怎么办 小孩子不喜欢吃菜怎么办 孩子初中不爱学习怎么办 大学不爱学家长怎么办 小孩子不爱读书不听话怎么办 小孩不爱读书写字怎么办 一年级学生不爱学习怎么办 孩子练字怕累怎么办 孩子不愿意学英语怎么办 生了儿子 不喜欢 怎么办 养两个儿子的怎么办 看诗词记不住怎么办 经常读书记不住怎么办 孩子不爱记数字怎么办 考研学不进去怎么办 读了职高后悔怎么办 不喜欢看书的人怎么办 生的儿子不喜欢怎么办 孩子上网不回家怎么办 儿子不想读书了怎么办 中考体育考不好怎么办 小孩突然没礼貌怎么办