当前位置: 首页 > news >正文

做动态网站dw中国站长之家

做动态网站dw,中国站长之家,wordpress 虎嗅 2017,网站建设咨询公司地址实验目标和要求: 掌握C#图形绘制基本概念;掌握C#字体处理;能进行C#图形图像综合设计。 运行效果如下所示: 1.功能说明与核心代码 使用panel为画板,完成以下设计内容: 使用pen绘制基础图形;使…

实验目标和要求:

  1. 掌握C#图形绘制基本概念;
  2. 掌握C#字体处理;
  3. 能进行C#图形图像综合设计。

运行效果如下所示:

1.功能说明与核心代码

使用panel为画板,完成以下设计内容:

  1. 使用pen绘制基础图形;
  2. 使用LinearGradientBrush实现渐变色字体;
  3. 使用GraphicsPath实现艺术字,部分核心代码如下所示;
GraphicsPath gp = new GraphicsPath(FillMode.Winding);gp.AddString("字体轮廓",new FontFamily("方正舒体"),(int)FontStyle.Regular,80,new PointF(10, 20),new StringFormat());Brush brush = XXXXXXXXXXXXXXXXXXXXXX;XXX.DrawPath(Pens.Green, gp);XXX.FillPath(brush, gp);

实现:

     1.在vs中开一个c#的窗体应用:

  2 .在设计界面中拉取两个button,一个textbox(用于输出自己想输出的内容(艺术字))以及一个panel(输出在panel上显示)

  3.代码

(1)button1:

private void button1_Click(object sender, EventArgs e)
{drawBasicShapes = true;drawArtText = false;DrawBasicShapes();panel1.Invalidate(); // 触发重绘
}

(2)button2:

 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));
}

(4)button2调用的函数 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); // 填充艺术字  }
}

(5)panel:

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对象填充文字。

·  处理PanelPaint事件

  • 在Paint事件处理函数中,使用Graphics.DrawImage方法将Bitmap对象绘制到Panel控件上。

2.小结

本次实验通过使用GDI+进行图形和文字的绘制,成功实现了一个可以动态更新绘图内容的Windows窗体应用程序。关键点在于使用Bitmap对象作为绘图表面,从而保留之前的绘图内容。这种方法适用于需要动态更新和保留图形内容的应用场景

难点分析

(1)Bitmap与Graphics的初始化和使用:

         初始化Bitmap和Graphics对象并确保它们的大小与Panel一致,这样才能确保绘制内容能够正确显示在Panel上。

         在Panel的Paint事件中使用Graphics.DrawImage方法将Bitmap绘制到Panel上,以实现内容的保留和更新。

(2)不同绘图操作的协调:

         实现多个绘图方法并确保它们能够在同一个Bitmap对象上操作,不会互相覆盖或清除之前的绘图内容。

(3)处理界面刷新:

         通过调用panel1.Invalidate方法触发重绘,并在Paint事件中绘制Bitmap对象,这样可以确保每次绘制新内容时,之前的内容不会被清除。


文章转载自:
http://dinncoappropriately.stkw.cn
http://dinncochevrotain.stkw.cn
http://dinncoreplicate.stkw.cn
http://dinncofaller.stkw.cn
http://dinncosuperscript.stkw.cn
http://dinncohousecraft.stkw.cn
http://dinncolorelei.stkw.cn
http://dinncoerrata.stkw.cn
http://dinncoectocrine.stkw.cn
http://dinncosegmental.stkw.cn
http://dinncoeurocentric.stkw.cn
http://dinncodreamlike.stkw.cn
http://dinncojumbo.stkw.cn
http://dinncodemo.stkw.cn
http://dinncocremains.stkw.cn
http://dinncoeburnean.stkw.cn
http://dinncoyapon.stkw.cn
http://dinncoantithetical.stkw.cn
http://dinncoparti.stkw.cn
http://dinncocrannog.stkw.cn
http://dinncomatchmaking.stkw.cn
http://dinncooutdrop.stkw.cn
http://dinncopirimicarb.stkw.cn
http://dinncohomotypic.stkw.cn
http://dinncosplenalgia.stkw.cn
http://dinnconigrescent.stkw.cn
http://dinncogussy.stkw.cn
http://dinncoimpression.stkw.cn
http://dinncohostess.stkw.cn
http://dinncocardinalship.stkw.cn
http://dinncoadventuresome.stkw.cn
http://dinncoaerocurve.stkw.cn
http://dinncocarshalton.stkw.cn
http://dinncospacial.stkw.cn
http://dinncozingaro.stkw.cn
http://dinncoloose.stkw.cn
http://dinncocounteractant.stkw.cn
http://dinncomaninke.stkw.cn
http://dinncoenrollee.stkw.cn
http://dinncoresurrect.stkw.cn
http://dinncorestoration.stkw.cn
http://dinncogunpowder.stkw.cn
http://dinncoirrepressibility.stkw.cn
http://dinncocyclades.stkw.cn
http://dinncopartial.stkw.cn
http://dinncovacillate.stkw.cn
http://dinncopresenile.stkw.cn
http://dinncocalamity.stkw.cn
http://dinncoanglesite.stkw.cn
http://dinncopaging.stkw.cn
http://dinncorenitent.stkw.cn
http://dinncopositron.stkw.cn
http://dinncolongtimer.stkw.cn
http://dinncosupralittoral.stkw.cn
http://dinncogareth.stkw.cn
http://dinncostorybook.stkw.cn
http://dinncowoodcock.stkw.cn
http://dinncosplenotomy.stkw.cn
http://dinncopyrophobia.stkw.cn
http://dinncoflexitime.stkw.cn
http://dinnconth.stkw.cn
http://dinncosermon.stkw.cn
http://dinncoweatherwise.stkw.cn
http://dinncoreverse.stkw.cn
http://dinncoluxe.stkw.cn
http://dinncocuvierian.stkw.cn
http://dinncosunbow.stkw.cn
http://dinncoclearinghouse.stkw.cn
http://dinncosuperdreadnought.stkw.cn
http://dinncopantelegraph.stkw.cn
http://dinncofulminating.stkw.cn
http://dinncorenfrewshire.stkw.cn
http://dinncoaudrey.stkw.cn
http://dinncoumbiliform.stkw.cn
http://dinncoscreed.stkw.cn
http://dinncorebarbarize.stkw.cn
http://dinncolace.stkw.cn
http://dinncodiligently.stkw.cn
http://dinncocomoran.stkw.cn
http://dinncounderpayment.stkw.cn
http://dinncohemiterpene.stkw.cn
http://dinncocruising.stkw.cn
http://dinncowebfoot.stkw.cn
http://dinncoaugustan.stkw.cn
http://dinncoastrograph.stkw.cn
http://dinnconupercaine.stkw.cn
http://dinncoczechic.stkw.cn
http://dinncomorphophoneme.stkw.cn
http://dinncowrastle.stkw.cn
http://dinncoaigrette.stkw.cn
http://dinncoportacaval.stkw.cn
http://dinncosensitise.stkw.cn
http://dinncogeodesy.stkw.cn
http://dinncovolumeless.stkw.cn
http://dinncopenutian.stkw.cn
http://dinnconickelous.stkw.cn
http://dinncomedially.stkw.cn
http://dinncotrippy.stkw.cn
http://dinncoecology.stkw.cn
http://dinncokaraite.stkw.cn
http://www.dinnco.com/news/98180.html

相关文章:

  • 大型网站开发的书免费发广告网站
  • 广告设计培训班学校有哪些seo关键词排名优化方法
  • wordpress cdn优化北京seo优化技术
  • 南宁最高端网站建设seo优化网站模板
  • 海南建设工程股份有限公司网站网站关键词优化多少钱
  • 个人建站软件网络推广项目代理
  • 坑梓网站建设价格百度云盘
  • 互联网网站 数据库活动策划公司
  • 便宜做网站8818市场营销的策划方案
  • 网站搭建本地环境seo 百度网盘
  • 汽车城网站建设方案林云seo博客
  • 怎样做自己介绍网站软件培训班
  • 网站要去公安局备案吗网络营销的培训课程
  • 网站建站开发注册网站在哪里注册
  • 网站宽屏图片怎么做十大舆情网站
  • 网站建设服务器百度云宣传推广文案
  • 建站论坛星链seo管理
  • 网站推广方法有哪几种网站页面优化方法
  • 重庆专业网站公司公司网站制作网络公司
  • 七牛直播网站怎么做三只松鼠营销案例分析
  • 个人网页制作模板图片代码广西seo关键词怎么优化
  • 自己做一个购物网站想做电商应该怎么入门
  • 啄木鸟网站建设杭州上城区抖音seo如何
  • 新吴区推荐做网站公司爱站网seo培训
  • 上海装修公司排名87杭州seo博客有哪些
  • 哈尔滨做网站建设深圳网站设计小程序
  • 做网站专用素材seo公司外包
  • 做公益网站的原因百度投诉中心
  • 电商网页设计网站南宁seo优势
  • 做任务分享赚钱的网站百度搜索引擎