2010-10-22 70 views
-1

基本上,我制作的绘制应用程序与MSPaint非常相似。 这个想法是,用户点击窗体上的任何地方,并应该能够在控件中写入文本。接下来,该文本应该以g.drawstring图形方法显示。如何在运行时绘制文本

+1

不错的功课.. – nothrow 2010-10-22 10:06:31

回答

3

我不想为你做所有的事情,但这里是一个完成你概述的目标的基本纲要。这不一定是最好的方法,但它应该让你开始,并将向你介绍一些WinForms概念。

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

还添加了一个事件处理程序TextBox因此,如果用户点击Esc键,它取消了编辑,如果他们按下回车键,文字被接受并创建UserControl

显示文本
创建UserControl,并确保了UserPaintOpaque样式在其建设集(见SetStyle - 你可能还需要考虑OptimizedDoubleBufferAllPaintingInWmPaint,因为这可以减少闪烁,虽然它确实需要额外的油漆代码)。

重写OnPaint方法在UserControl和实现代码绘制字符串(请记住,您还需要一种方法来设置控件上的文本)。

结论
如果你钩一切,你应该有出现,以满足您的需求的东西。为进一步实验,请考虑如何删除对UserControl的需求。祝好运并玩得开心点!