基本上,我制作的绘画应用与MSPaint非常相似。 这个想法是,用户点击表单上的任何地方,并且应该能够在控件中写入文本。然后,该文本应以g.drawstring图形方法显示。
答案 0 :(得分:3)
我不想为你做整件事,但这里是一个完成你所提出的目标的基本方法。这不一定是最好的方法,但它应该让您入门,并将向您介绍一些WinForms概念。
撰写文字
创建Form
并向其添加TextBox
控件。确保默认情况下隐藏它。覆盖OnMouseClick
的Form
方法并添加检查TextBox
是否可见的代码,如果没有,则显示该代码并将焦点置于其上以供用户输入其文本。如果TextBox
已经显示,则代码应该隐藏它并在其显示文本的位置创建一个新的UserControl
(有关该UserControl
的详细信息,请参见下文。)
还要向TextBox
添加一个事件处理程序,以便在用户点击Esc时取消编辑,如果他们按Enter键,则接受该文本并创建UserControl
。
显示文字
创建UserControl
并确保在其构造中设置UserPaint
和Opaque
样式(请参阅SetStyle
- 您可能还需要考虑OptimizedDoubleBuffer
和{ {3}}因为这可以减少闪烁,虽然它确实需要额外的绘画代码)。
覆盖AllPaintingInWmPaint
中的OnPaint
方法并实现绘制字符串的代码(请记住,您还需要一种在控件上设置文本的方法)。
<强>结论强>
如果你把所有这些挂起来,你应该有一些看起来符合你要求的东西。有关进一步的实验,请考虑如何消除对UserControl
的需求。祝你好运,玩得开心!