VC6 GDI+ 如何将绘制的艺术字保存为图片

ljpplove 2009-03-10 09:05:43
RT
1 绘制完特效文字(比如圆弧排列文字)后,需要将其保存为透明的PNG图片到指定路径。
2 图片的大小必须恰好容纳文字而没有不足或空余。
3 急啊,大侠们帮帮忙。在线等。
...全文
370 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yayexing 2011-08-10
  • 打赏
  • 举报
回复
学习...
eboyallen 2010-11-24
  • 打赏
  • 举报
回复
Graphics* g = Graphics::FromImage( &mImg );
这只在内存中,没法显示呀?这又如何解决?
Tinary3v0 2009-03-11
  • 打赏
  • 举报
回复
站内短信
Tinary3v0 2009-03-10
  • 打赏
  • 举报
回复
用代码说话,不多解释了 仔细看看就能明白。
int imX = 100;   //这里设定了固定的值 你需要自己计算出这两个值
int imY = 100;

Bitmap mImg( imX, imY ); //建立一个一定你要求大小的图

Graphics* g = Graphics::FromImage( &mImg ); //同图像获得绘图句柄,说白了就是找一个专属于这个图像的画图工具
g->SetPageUnit( UnitPixel ); //这句可以不设定也可以的 只是提醒一下可能会有单位问题

Font myFont( L"新宋体", 20, 0, UnitPixel );

SolidBrush blackBrush( Color( 255, 0, 0, 255 ) );

PointF orL; //初始绘图位置,你如果要求图像边缘紧贴文字这里需要设定为(0,0);
orL.X = 10;
orL.Y = 10;
g->DrawString( L"This is a text!", 7, &myFont, orL, &blackBrush );

CLSID pngClsid;
GetEncoderClsid( L"image/png", &pngClsid ); //取得PNG的编码ID,函数到http://msdn.microsoft.com/en-us/library/ms533843(VS.85).aspx去自己考

mImg.Save(L"N.png", &pngClsid, NULL); //保存为PNG
lygfqy 2009-03-10
  • 打赏
  • 举报
回复
png没有搞过,bmp到是弄过
不过大致原理都是你把字生成到dc上了以后
然后用dc里的数据往图的格式里填写咯
研究一下png的图片格式吧
ljpplove 2009-03-10
  • 打赏
  • 举报
回复
我试试看,谢谢,您的qq能留下吗?
Tinary3v0 2009-03-10
  • 打赏
  • 举报
回复
你肯定要首先变换一次 先取得个范围 但是不绘图

取得imX imY 以后再建立png 再绘图

去imX imY还不简单? 你文字怎么绘制的啊? 总该知道GraphicsPath 也可以从文字得到吧 也就是建立文字路径吧 就算你使用了 变形也没有关系的啊
只要通过各个文字建立路径 然后再把路径合并得到总路径就行了 最后通过总路径GetBounds?不就得到了路径所处的矩形大小了吗?
ljpplove 2009-03-10
  • 打赏
  • 举报
回复
楼上说得对,我也是这么做的,不过问题的关键,是我如何计算imX,imY,因为在文字输出前,在path变换前,我只能够得到size,height,当其变化后,文字就变形了,比如成了弧状排列或倾斜。这时候,imX,imY就不知道怎么获取了。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧