GDI+中关于文字整体形状的变换
2008-12-07 20:53
176 查看
有一位网友在问,如何做到下图所示的效果:
由于时间关系(太忙,见谅!),我这里只说思路。
你先将你的文字加入到GraphicsPath中,比如:
GraphicsPath gpText = new GraphicsPath();
gpText.AddString(...);
//取得path的外接矩形,做这一步的目的是为了控制后面需要的点的变换方程
RectangleF rectText = gpText.GetBounds();
PointF[] points = gpText.PathPoints;
PointF[] pointsTmp = new PointF[points.Count];
for(int i=0; i < points.Length; i++)
{
//这里对你的关键点进行变形处理,比如:pointsTmp[i].Y = yourNewYValue;
//yourNewYValue需要根据你的变形方式写方程式,比如:sin(),cos()等等,上面是椭圆形的下部部分,这一块需要写出模拟方程式;当然也可以将那一部分看成Cos()或Sin()函数的一小部分,这样应该比模拟椭圆更方便。由于时间关系,我就不再写具体的算法了。
//pointsTmp[i].X = yourNewXValue;如果缩小为原来的50%,则pointsTmp[i].X = points[i].X;如果不变形的话,则:pointsTmp[i].X = points[i].X;
}
之后,GraphicsPath gpTextResult = new GraphicsPath();
gpTextResult = new GraphicsPath(pointsTmp, gpText.PathTypes);
最后,就是画你的结果了,比如:graphics.FillPath(...);
OK。
由于时间关系(太忙,见谅!),我这里只说思路。
你先将你的文字加入到GraphicsPath中,比如:
GraphicsPath gpText = new GraphicsPath();
gpText.AddString(...);
//取得path的外接矩形,做这一步的目的是为了控制后面需要的点的变换方程
RectangleF rectText = gpText.GetBounds();
PointF[] points = gpText.PathPoints;
PointF[] pointsTmp = new PointF[points.Count];
for(int i=0; i < points.Length; i++)
{
//这里对你的关键点进行变形处理,比如:pointsTmp[i].Y = yourNewYValue;
//yourNewYValue需要根据你的变形方式写方程式,比如:sin(),cos()等等,上面是椭圆形的下部部分,这一块需要写出模拟方程式;当然也可以将那一部分看成Cos()或Sin()函数的一小部分,这样应该比模拟椭圆更方便。由于时间关系,我就不再写具体的算法了。
//pointsTmp[i].X = yourNewXValue;如果缩小为原来的50%,则pointsTmp[i].X = points[i].X;如果不变形的话,则:pointsTmp[i].X = points[i].X;
}
之后,GraphicsPath gpTextResult = new GraphicsPath();
gpTextResult = new GraphicsPath(pointsTmp, gpText.PathTypes);
最后,就是画你的结果了,比如:graphics.FillPath(...);
OK。
相关文章推荐
- 关于cell点击之后变换背景文字的颜色的cell.selectedTextColor这个属性可以用的
- 关于【画面文言修正】 的 注意点。 (1.确认文字风格 2 从整体来去确认风格)
- 一些关于GDI+的文字(zz)
- 关于多行文字水平垂直居中的一点心得分享
- div鼠标指向文字与背景变换
- 关于checkbox与文字混排无法对齐的解决方法
- 2D平面中关于矩阵(Matrix)跟图形变换的讲解
- 关于小波变换和Gabor变换的一些知识
- Android4.1 关于Rotation相关的Configuration整体分析
- 关于文字内容溢出用点点点(…)省略号表示
- 关于第三方应用(Android平台)通过微信分享文字、图片的问题研究。
- 关于Struts, Spring, Hibernate的一点文字
- GDI+托管代码坐标变换矩阵复位问题
- 2D游戏中使用GDI+处理文字
- 偶然看到的一段文字,转过来,关于VB
- css3 关于文字,字体属性(转载)
- 关于python 和C++使用cv画矩形并填充颜色同时填充文字
- ShaderLab学习小结(二)通过Shader变换物体形状
- unity -- 关于文字text和图片image等组件一起居中解决方案
- 关于GDI+的用法及资源下载