成都企业做网站多少钱,营销软文写作,wordpress浏览人数,网站开发大多用什么编程语言实验目标和要求#xff1a;
掌握C#图形绘制基本概念#xff1b;掌握C#字体处理#xff1b;能进行C#图形图像综合设计。
运行效果如下所示#xff1a; 1.功能说明与核心代码
使用panel为画板#xff0c;完成以下设计内容#xff1a;
使用pen绘制基础图形#xff1b;使…实验目标和要求
掌握C#图形绘制基本概念掌握C#字体处理能进行C#图形图像综合设计。
运行效果如下所示 1.功能说明与核心代码
使用panel为画板完成以下设计内容
使用pen绘制基础图形使用LinearGradientBrush实现渐变色字体使用GraphicsPath实现艺术字部分核心代码如下所示
GraphicsPath gp new GraphicsPath(FillMode.Winding);gp.AddString(字体轮廓,new FontFamily(方正舒体),(int)FontStyle.Regular,80,new PointF(10, 20),new StringFormat());Brush brush XXXXXXXXXXXXXXXXXXXXXX;XXXDrawPath(Pens.Green, gp);XXXFillPath(brush, gp);
实现 1.在vs中开一个c#的窗体应用 2 .在设计界面中拉取两个button一个textbox用于输出自己想输出的内容艺术字以及一个panel输出在panel上显示 3.代码
1button1
private void button1_Click(object sender, EventArgs e)
{drawBasicShapes true;drawArtText false;DrawBasicShapes();panel1.Invalidate(); // 触发重绘
}
2button2: private void button2_Click(object sender, EventArgs e){drawBasicShapes false;drawArtText true;DrawArtText();panel1.Invalidate(); // 触发重绘}
(3)button1调用的函数DrawBasicShapes()
private void DrawBasicShapes()
{// 使用 Pen 绘制基础图形Pen blackPen new Pen(Color.Black, 3);drawingGraphics.DrawRectangle(blackPen, 10, 70, 100, 50);drawingGraphics.DrawEllipse(blackPen, 10, 70, 100, 50);// 使用 LinearGradientBrush 实现渐变色字体Font font new Font(Arial, 24);LinearGradientBrush gradientBrush new LinearGradientBrush(new Rectangle(10, 20, 100, 50),Color.Blue,Color.Red,45);drawingGraphics.DrawString(直接拿捏, font, gradientBrush, new PointF(10, 150));
}
4button2调用的函数 DrawArtText()
private void DrawArtText()
{string text textBox1.Text;using (Font font new Font(方正舒体, 40, FontStyle.Regular))using (GraphicsPath gp new GraphicsPath(FillMode.Winding))using (SolidBrush brush new SolidBrush(Color.AliceBlue)) // 使用 SolidBrush 填充艺术字 using (Pen pen new Pen(Color.Green, 2)) // 使用 Pen 绘制艺术字的轮廓 {gp.AddString(text,font.FontFamily,(int)font.Style,font.Size,new PointF(80, 30), // 设置艺术字的起始位置 StringFormat.GenericDefault);drawingGraphics.DrawPath(pen, gp); // 绘制艺术字的轮廓 drawingGraphics.FillPath(brush, gp); // 填充艺术字 }
}
5panel
private void panel1_Paint(object sender, PaintEventArgs e)
{// 将 Bitmap 绘制到 Panel 上e.Graphics.DrawImage(drawingBitmap, 0, 0);
}
4.代码细节补充完整代码
using System.Drawing.Drawing2D;
using System.Drawing;
using System.Windows.Forms;
using System;namespace 图形图像编程
{public partial class Form1 : Form{// 标志位private bool drawBasicShapes false;private bool drawArtText false;// Bitmap 对象用于保存绘制的图像private Bitmap drawingBitmap;private Graphics drawingGraphics;// 构造函数public Form1(){InitializeComponent();// 初始化 Bitmap 和 Graphics 对象drawingBitmap new Bitmap(panel1.Width, panel1.Height);drawingGraphics Graphics.FromImage(drawingBitmap);// 绑定按钮点击事件button1.Click new EventHandler(this.button1_Click);button2.Click new EventHandler(this.button2_Click);panel1.Paint new PaintEventHandler(this.panel1_Paint);}// 绘制基础图形按钮点击事件处理private void button1_Click(object sender, EventArgs e){drawBasicShapes true;drawArtText false;DrawBasicShapes();panel1.Invalidate(); // 触发重绘}// 添加艺术字按钮点击事件处理private void button2_Click(object sender, EventArgs e){drawBasicShapes false;drawArtText true;DrawArtText();panel1.Invalidate(); // 触发重绘}// 绘制基础图形的方法private void DrawBasicShapes(){// 使用 Pen 绘制基础图形Pen blackPen new Pen(Color.Black, 3);drawingGraphics.DrawRectangle(blackPen, 10, 70, 100, 50);drawingGraphics.DrawEllipse(blackPen, 10, 70, 100, 50);// 使用 LinearGradientBrush 实现渐变色字体Font font new Font(Arial, 24);LinearGradientBrush gradientBrush new LinearGradientBrush(new Rectangle(10, 20, 100, 50),Color.Blue,Color.Red,45);drawingGraphics.DrawString(直接拿捏, font, gradientBrush, new PointF(10, 150));}// 绘制艺术字的方法private void DrawArtText(){string text textBox1.Text;using (Font font new Font(方正舒体, 40, FontStyle.Regular))using (GraphicsPath gp new GraphicsPath(FillMode.Winding))using (SolidBrush brush new SolidBrush(Color.AliceBlue)) // 使用 SolidBrush 填充艺术字 using (Pen pen new Pen(Color.Green, 2)) // 使用 Pen 绘制艺术字的轮廓 {gp.AddString(text,font.FontFamily,(int)font.Style,font.Size,new PointF(80, 30), // 设置艺术字的起始位置 StringFormat.GenericDefault);drawingGraphics.DrawPath(pen, gp); // 绘制艺术字的轮廓 drawingGraphics.FillPath(brush, gp); // 填充艺术字 }}// Panel的Paint事件处理private void panel1_Paint(object sender, PaintEventArgs e){// 将 Bitmap 绘制到 Panel 上e.Graphics.DrawImage(drawingBitmap, 0, 0);}}
}运行结果 小结
1.实现细节
· 创建项目和设计窗体
新建一个Windows Forms应用程序项目。在窗体上添加一个Panel控件和两个Button控件以及textbox。设置Button控件的文本为“绘制基础图形”和“添加艺术字”。
· 初始化绘图资源
在窗体构造函数中初始化一个Bitmap对象和一个Graphics对象。将Bitmap对象的大小设置为Panel控件的大小。使用Graphics.FromImage方法从Bitmap对象创建一个Graphics对象用于绘图。
· 实现按钮点击事件处理函数
在第一个按钮的点击事件处理函数中调用绘制基础图形的方法。在第二个按钮的点击事件处理函数中调用绘制艺术文字的方法。在每个事件处理函数中调用panel1.Invalidate方法触发重绘。
· 实现绘图方法
在绘制基础图形的方法中使用Pen对象绘制矩形和椭圆使用LinearGradientBrush对象绘制渐变色文字。在绘制艺术文字的方法中使用GraphicsPath对象创建艺术文字的路径并使用SolidBrush对象填充文字。
· 处理Panel的Paint事件
在Paint事件处理函数中使用Graphics.DrawImage方法将Bitmap对象绘制到Panel控件上。
2.小结
本次实验通过使用GDI进行图形和文字的绘制成功实现了一个可以动态更新绘图内容的Windows窗体应用程序。关键点在于使用Bitmap对象作为绘图表面从而保留之前的绘图内容。这种方法适用于需要动态更新和保留图形内容的应用场景
难点分析
1Bitmap与Graphics的初始化和使用 初始化Bitmap和Graphics对象并确保它们的大小与Panel一致这样才能确保绘制内容能够正确显示在Panel上。 在Panel的Paint事件中使用Graphics.DrawImage方法将Bitmap绘制到Panel上以实现内容的保留和更新。
2不同绘图操作的协调 实现多个绘图方法并确保它们能够在同一个Bitmap对象上操作不会互相覆盖或清除之前的绘图内容。
3处理界面刷新 通过调用panel1.Invalidate方法触发重绘并在Paint事件中绘制Bitmap对象这样可以确保每次绘制新内容时之前的内容不会被清除。