当前位置: 首页 > news >正文

如需武汉手机网站建设广告宣传网站

如需武汉手机网站建设,广告宣传网站,专做海报设计的网站,020网站系统一、需求 想要绘制如下所示的斜体字,45度 二、分析&思路 Graphics类有个 RotateTransform方法,可以传入任意角度的值来旋转画板。但是这个方法的旋转中心是画板的左上角,所以直接单单用这个方法不能满足我们的需求。此外, G…

一、需求

想要绘制如下所示的斜体字,45度

二、分析&思路

Graphics类有个 RotateTransform方法,可以传入任意角度的值来旋转画板。但是这个方法的旋转中心是画板的左上角,所以直接单单用这个方法不能满足我们的需求。此外, Graphics类还有个 TranslateTransform方法可以改变坐标的原点,而且这个方法是沿着矩形的x,y轴平移的,即就算图片旋转了一定的角度后,再调用 translatetransform 方法,它还是沿着x,y轴平移。于是通过以下三个步骤即可实现图片中心旋转。 

旋转前字体区域顶部为AB,旋转后字体区域顶部为CB
文本AB,旋转后为CB
1、将原点平移到C点
2、绕着新原点C点逆时针旋转45°
3、在新原点C处绘制字符
4、取消旋转
已知:AB=BC=width,∠ABC=45°,B坐标为(Xb,Yb),原点在左上角,求C坐标。
CD = BD = BC ÷ √2 = width ÷ √2
Xc = Xb - BD = Xb - width ÷ √2 
Yc = Yb + CD = Yb +  width ÷ √2

 

 三、代码

#define TOP_EMPTY_HEIGHT 10
#define LEFT_YRULE_WDITH 50 //左侧Y轴间隔
#define RIGHT_YRULE_WDITH 15//右侧Y轴间隔
#define BOTTOM_XRULE_HEIGHT 80 //底部X轴的高度
#define TEXT_RECT_WIDTH 55	//文字区域宽度
#define TEXT_RECT_HEIGHT 13	//文字区域高度DoPaint(HDC hDC, const RECT& rcPaint)
{RECT rectFrame = m_rcItem;rectFrame.top += TOP_EMPTY_HEIGHT;rectFrame.left += LEFT_YRULE_WDITH;rectFrame.right -= RIGHT_YRULE_WDITH;rectFrame.bottom -= BOTTOM_XRULE_HEIGHT;Gdiplus::Graphics graphics(hDC);int nFont = 12; //字体大小DWORD dwTxtColor = 0xFF999999;//文字颜色wstring strText = L"软件服务";RECT rcText;//原字体区域rcText.right = rectFrame.left + 10;rcText.left = rcText.right - TEXT_RECT_WIDTH ;//---------------------------------------------字体样式---------------------------------------//字体Gdiplus::FontFamily fontFamily(L"微软雅黑");Gdiplus::Font font(&fontFamily, (Gdiplus::REAL)nFont, Gdiplus::FontStyleRegular, Gdiplus::UnitPixel);//画刷Gdiplus::SolidBrush brush(dwTxtColor );//字符格式Gdiplus::StringFormat stringformat;stringformat.SetAlignment(Gdiplus::StringAlignmentFar);// 对应右对齐DT_RIGHTstringformat.SetLineAlignment(Gdiplus::StringAlignmentCenter);//对应垂直居中DT_VCENTERstringformat.SetTrimming(Gdiplus::StringTrimmingEllipsisCharacter);//句末显示不完是否使用...代替DT_END_ELLIPSISstringformat.SetFormatFlags(Gdiplus::StringFormatFlagsNoWrap);//对应单行显示DT_SINGLELINE//---------------------------------------------绘制不旋转的字符---------------------------------------Gdiplus::RectF rcfText1(rcText.left, rcText.top, TEXT_RECT_WIDTH, TEXT_RECT_HEIGHT);graphics.DrawString(strText.c_str(), -1, &font, rcfText1, &stringformat, &brush);//----------------------------------------------绘制旋转字符---------------------------------------//translatetransform平移 + rotatetransform旋转//1、把画板(graphics对象)原点平移到位置(x, y)float x = rcText.right - TEXT_RECT_WIDTH / sqrt(2);float y = rcText.top + TEXT_RECT_WIDTH / sqrt(2);graphics.TranslateTransform(x, y);//2、绕新原点(x, y)逆时针旋转画板45度graphics.RotateTransform(-45);//3、在新原点(x, y)处绘制字符Gdiplus::RectF rcfText2(0, 0, TEXT_RECT_WIDTH , TEXT_RECT_HEIGHT );graphics.DrawString(strText.c_str(),-1, &font, rcfText2, &stringformat, &brush);//4、取消旋转graphics.ResetTransform();
}

 

参考:

1、C# 使用 GDI+ 实现添加中心旋转(任意角度)的文字_C#_服务器之家

2、GDI+ 中图像矩阵变换_litanyuan的博客-CSDN博客

3、https://greambwang.blog.csdn.net/article/details/98651600

4、关于Duilib中字体穿透变暗的几种可能性解决方案_8687137的技术博客_51CTO博客

http://www.khdw.cn/news/63884.html

相关文章:

  • 分类信息网站开发需求方案西安网站维护
  • 贵阳市建设城乡规划局网站seo整站优化报价
  • 做网站需求文档抖音运营推广策划方案
  • 套路网站怎么做的搜狗官方网站
  • 网站备案现场百度快速排名
  • apache 多个网站查关键词排名软件
  • 青岛煜鹏网站建设公司海外营销方案
  • 做网站的电脑配置成品app直播源码有什么用
  • 自做网站图片版权搜索引擎优化排名优化培训
  • 莱芜网站优化加徽信xiala5效果好站长工具 站长之家
  • 网站建设找客户渠道潍坊网站建设平台
  • 网站风格设计怎么写windows优化大师和鲁大师
  • 广东网站建设推荐360优化大师下载官网
  • 做网站怎样盈利湖南网站建设营销推广
  • 企业网站案列河南靠谱seo地址
  • 淘宝客怎么自己做网站永久免费无代码开发平台网站
  • 陕西手机网站建设公司哪家好地推公司
  • wordpress挖北京seo关键词排名
  • 网站正在建设中是什么意思百度浏览器网址大全
  • 凸一品牌策划公司常宁seo外包
  • 大连网站排名网络推广公司百度图片搜索
  • 网页版微信二维码几分钟失效宁波 seo排名公司
  • 网站 营销型如何做好百度推广
  • 淘宝客网站备案教程旺道seo推广有用吗
  • 网站运营与推广计划书百度网络营销app下载
  • 前端如何兼职做网站网络营销渠道有哪几种
  • 有创意的个人网站宁波网络营销公司
  • 南京做南京华美整容网站广告关键词查询
  • 网站原型是以下哪层设计的结果论坛推广软件
  • 怎么自己的电脑做网站服务器宁德市古田县