C#.net如何在GDI+绘图过程中添加文字?样子就像windows自带的画图软件那样

C#.net如何在GDI+绘图过程中添加文字?样子就像windows自带的画图软件那样,第1张

//下面这两个文件位置根据你的需求,修改成你机子上的绝对位置。

//程序运行完后,会在newFile位置生成一个新文件。

string oldFile = Environment.CurrentDirectory + "\\test.jpg"

string newFile = Environment.CurrentDirectory + "\\test1.jpg"

Image image = Image.FromFile(oldFile)

Graphics graphic = Graphics.FromImage(image)

graphic.DrawString("绘画时间:2010年11月24日11:31:10", new Font("幼圆", 24f, FontStyle.Regular), new SolidBrush(Color.Black), 100f, 100f)

image.Save(newFile)

image.Dispose()

graphic.Dispose()

>数字输入你要d出么?如何d出?d出一个新的窗体还是直接在原来控件上出现输入装置?

>数字输入理论上如果你能响应keydown就问题不大...不响应请设置自定义控件允许焦点...还不响应就看天...

>如果输入窗口由你自己绘制的话会恶心死你 你要做的是完全模拟一个textBox的行为 如果你做过基于directX的游戏就会发现这多恶心...需要计算光标在哪 需要处理内容超出文本框的情况 需要处理一大堆IMM事件来支持输入法(只输入数字反而简单了...) 需要支持鼠标事件来选中文本和移动光标 需要支持shift+方向键的选中 ctrl+C ctrl+V的剪切板处理...总之....想做的没什么瑕疵要费一番功夫...

>其实简单的话(比如没光标...)直接响应keydown 程序里留一个stringBuilder就好了...每keydown识别一次 然后整个控件重绘 逐个字符用GDI绘制出来...

>GDI绘制文本有啥难度么=A= 当然 这还分有换行没换行的情况... 还要计算到绘制内容超出客户区的情况 所以要逐字符measure...或者设置clip然后简单的右对齐绘制 应该没什么问题 不会超出矩形外的

>总之能处理以上想到的大大小小细节就好了 绘制和事件响应我觉得没难点=A=


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11557407.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存