如何在运行时绘制文本

时间:2010-10-22 10:04:50

标签: c# graphics text paint draw

基本上,我制作的绘画应用与MSPaint非常相似。 这个想法是,用户点击表单上的任何地方,并且应该能够在控件中写入文本。然后,该文本应以g.drawstring图形方法显示。

1 个答案:

答案 0 :(得分:3)

我不想为你做整件事,但这里是一个完成你所提出的目标的基本方法。这不一定是最好的方法,但它应该让您入门,并将向您介绍一些WinForms概念。

撰写文字
创建Form并向其添加TextBox控件。确保默认情况下隐藏它。覆盖OnMouseClickForm方法并添加检查TextBox是否可见的代码,如果没有,则显示该代码并将焦点置于其上以供用户输入其文本。如果TextBox已经显示,则代码应该隐藏它并在其显示文本的位置创建一个新的UserControl(有关该UserControl的详细信息,请参见下文。)

还要向TextBox添加一个事件处理程序,以便在用户点击Esc时取消编辑,如果他们按Enter键,则接受该文本并创建UserControl

显示文字
创建UserControl并确保在其构造中设置UserPaintOpaque样式(请参阅SetStyle - 您可能还需要考虑OptimizedDoubleBuffer和{ {3}}因为这可以减少闪烁,虽然它确实需要额外的绘画代码)。

覆盖AllPaintingInWmPaint中的OnPaint方法并实现绘制字符串的代码(请记住,您还需要一种在控件上设置文本的方法)。

<强>结论
如果你把所有这些挂起来,你应该有一些看起来符合你要求的东西。有关进一步的实验,请考虑如何消除对UserControl的需求。祝你好运,玩得开心!