C# WinForm画直线,怎么画?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WinForm画直线,怎么画?相关的知识,希望对你有一定的参考价值。

private void Form1_Load(object sender, EventArgs e) Graphics g = Graphics.FromHwnd(this.Handle); PointF P1 = new PointF(100f, 100f); PointF P2 = new PointF(200f, 200f); PointF P3 = new PointF(101f, 101f); PointF P4 = new PointF(201f, 201f); g.DrawLine(Pens.Yellow, P1, P2); g.DrawLine(Pens.Red, P3, P4); 运行了,啥也没有???????????

参考技术A 单就这样放在Form1_Load中窗体加载是显示不出来的,
一楼是种方法,还有种方法:可以考虑加个线程是可以的,Graphics
g
=
CreateGraphics();

C# Winform picturebox显示用代码画出来的字符串图片

镇场诗:
———大梦谁觉,水月中建博客。百千磨难,才知世事无常。
———今持佛语,技术无量愿学。愿尽所学,铸一良心博客。
——————————————————————————————————————————

1 UI

技术分享

 

 

2 code

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Threading.Tasks;
  9 using System.Windows.Forms;
 10 
 11 namespace WindowsFormsApplication6
 12 {
 13     
 14     public partial class Form1 : Form
 15     {
 16 
 17         public Form1()
 18         {
 19             InitializeComponent();
 20         }
 21         /// <summary>
 22         /// 用来画出图片,然后在picturebox中显示图片的
 23         /// </summary>
 24         /// <param name="pBox">哪个picturebox显示画出来的图片呀</param>
 25         /// <param name="content">将哪个字符串画进图片呢</param>
 26         private void pbShow(PictureBox pBox,string content)
 27         {
 28             //创建图片对象,一会要给picturebox的
 29             //这个图片,宽32,高31,刚好是picturebox的宽与高
 30             Bitmap bm = new Bitmap(32, 31);
 31             //从指定的Image对象创建新的Grapics画板  
 32             Graphics g = Graphics.FromImage(bm);
 33             //字体是宋体
 34             string font = "宋体";
 35             //字体的颜色是白色
 36             Color fontColor = Color.White;
 37             //创建一个点,这个点就是用来指定被画对象的初始位置
 38             Point p = new Point(10, 5);
 39             //画字符串 画的内容是content   宋体,12号,粗体               字体的颜色:白色     字体的位置
 40             g.DrawString(content, new Font(font, 12, FontStyle.Bold), new SolidBrush(fontColor), p);
 41             
 42             //把画出来的图片交给picturebox吧
 43             pBox.Image = bm;
 44         }
 45 
 46         //定义一个枚举后,配合bool数组,程序的可读性就会大大提高
 47         enum flag:Int16
 48         {
 49             OF,
 50             DF,
 51             IF,
 52             SF,
 53             ZF,
 54             AF,
 55             PF,
 56             CF
 57         }
 58 
 59         //flag寄存器的每一位的状态,true对应1,false对应0
 60         bool[] eachFlag = new bool[] { true, true, true, true, true, true, true, true };
 61 
 62         private void Form1_Load(object sender, EventArgs e)
 63         {
 64             
 65         }
 66 
 67         #region 16个按钮被点击后的代码
 68         /// <summary>
 69         /// 按钮被单击,pbOF这个picturebox显示OV字样,然后OF标志位对应在bool数组的内容变为ture
 70         /// </summary>
 71         /// <param name="sender"></param>
 72         /// <param name="e"></param>
 73         private void btnOV_Click(object sender, EventArgs e)
 74         {
 75             pbShow(pbOF,"OV");
 76             eachFlag[(int)flag.OF] = true;
 77         }
 78 
 79         private void btnNV_Click(object sender, EventArgs e)
 80         {
 81             pbShow(pbOF, "NV");
 82             eachFlag[(int)flag.OF] = false;
 83         }
 84 
 85         private void btnDN_Click(object sender, EventArgs e)
 86         {
 87             pbShow(pbDF,"DN");
 88             eachFlag[(int)flag.DF] = true;
 89         }
 90 
 91         private void btnUP_Click(object sender, EventArgs e)
 92         {
 93             pbShow(pbDF, "UP");
 94             eachFlag[(int)flag.DF] = false;
 95         }
 96 
 97         private void btnEI_Click(object sender, EventArgs e)
 98         {
 99             pbShow(pbIF, "EI");
100             eachFlag[(int)flag.IF] = true;
101         }
102 
103         private void btnDI_Click(object sender, EventArgs e)
104         {
105             pbShow(pbIF, "DI");
106             eachFlag[(int)flag.IF] = false;
107         }
108 
109         private void btnNG_Click(object sender, EventArgs e)
110         {
111             pbShow(pbSF, "NG");
112             eachFlag[(int)flag.SF] = true;
113         }
114 
115         private void btnPL_Click(object sender, EventArgs e)
116         {
117             pbShow(pbSF, "PL");
118             eachFlag[(int)flag.SF] = false;
119         }
120 
121         private void btnZR_Click(object sender, EventArgs e)
122         {
123             pbShow(pbZF, "ZR");
124             eachFlag[(int)flag.ZF] = true;
125         }
126 
127         private void btnNZ_Click(object sender, EventArgs e)
128         {
129             pbShow(pbZF, "NZ");
130             eachFlag[(int)flag.ZF] = false;
131         }
132 
133         private void btnAC_Click(object sender, EventArgs e)
134         {
135             pbShow(pbAF, "AC");
136             eachFlag[(int)flag.AF] = true;
137         }
138 
139         private void btnNA_Click(object sender, EventArgs e)
140         {
141             pbShow(pbAF, "NA");
142             eachFlag[(int)flag.AF] = false;
143         }
144 
145         private void btnPE_Click(object sender, EventArgs e)
146         {
147             pbShow(pbPF, "PE");
148             eachFlag[(int)flag.PF] = true;
149         }
150 
151         private void btnPO_Click(object sender, EventArgs e)
152         {
153             pbShow(pbPF, "PO");
154             eachFlag[(int)flag.PF] = false;
155         }
156 
157         private void btnCY_Click(object sender, EventArgs e)
158         {
159             pbShow(pbCF, "CY");
160             eachFlag[(int)flag.CF] = true;
161         }
162 
163         private void btnNC_Click(object sender, EventArgs e)
164         {
165             pbShow(pbCF, "NC");
166             eachFlag[(int)flag.CF] = false;
167         }
168         #endregion
169 
170         /// <summary>
171         /// 显式最终结果,字母对应01的转换
172         /// </summary>
173         /// <param name="sender"></param>
174         /// <param name="e"></param>
175         private void button1_Click(object sender, EventArgs e)
176         {
177             //用一个数组的话,就很好遍历了。
178             PictureBox[] pb = new PictureBox[] { pbOF, pbDF, pbIF, pbSF, pbZF, pbAF, pbPF, pbCF };
179             //因为要对字符串反复的增添,修改,覆盖。所以我选择了stringbuilder
180             StringBuilder sb = new StringBuilder();
181             foreach (var item in eachFlag)
182             {
183                 if(item)
184                 {
185                     sb.Append("1");
186                 }
187                 else
188                 {
189                     sb.Append("0");
190                 }
191             }
192             textBox1.Text = sb.ToString();
193         }
194 
195     }
196 }

 

 

3 show

技术分享

 

 

 

——————————————————————————————————————————
博文的精髓,在技术部分,更在镇场一诗。
C#是优秀的语言,值得努力学习。
如果博文的内容有可以改进的地方,甚至有错误的地方,请留下评论,我一定努力改正,争取铸成一个良心博客。
注:此文仅作为科研学习,如果我无意中侵犯了您的权益,请务必及时告知,我会做出改正。








以上是关于C# WinForm画直线,怎么画?的主要内容,如果未能解决你的问题,请参考以下文章

C#中GDI如何连续绘制线段

c# winform中怎么画出圆角矩形或者就有这样的控件,求指点

C#winform 求教怎么画一个圆环控件

请教C#中如何在 WinForm中画曲线图

如何在C#中画半透明的圆?

C# Winform picturebox显示用代码画出来的字符串图片