vbnetgraphic简单的画图程序
VB用Picture控件绘制图形并保存
![VB用Picture控件绘制图形并保存](https://img.taocdn.com/s3/m/d65e20f59a89680203d8ce2f0066f5335a816788.png)
Co4;bmp"
'设置或返回对话框的默认文件扩展名
CommonDialog1.ShowOpen
If CommonDialog1.FileName = "" Then Exit Sub
Rem 由绝对路径变相对路径 CurPath = App.Path AbsPath = CommonDialog1.FileName RPath = Replace(AbsPath, CurPath, vbNullString)
CommonDialog1.InitDir = App.Path CommonDialog1.FileName = "abcp"
'设置默认路径
CommonDialog1.DialogTitle = "请选择的模板文件名"
CommonDialog1.Filter = "位图文件(*.bmp)|*.bmp"
y = Sin(x * 3.1415926 / 180) Picture1.PSet (x, y) Next
Picture1.CurrentX = 10 Picture1.CurrentY = 0 Picture1.Font = "黑体" Picture1.FontSize = 20 Picture1.ForeColor = 16777215 Picture1.Print "ABCDF中国"
End Sub Rem 绘曲线图 Private Sub Command1_Click()
Dim x As Integer Dim y As Single
Picture1.AutoRedraw = True Picture1.Cls Picture1.Scale (0, 1.2)-(360, -1.2) Picture1.Line (0, 0)-(360, 0) For x = 0 To 360
VB图形和绘图操作
![VB图形和绘图操作](https://img.taocdn.com/s3/m/0784dd32b6360b4c2e3f5727a5e9856a561226cf.png)
VB图形和绘图操作VB图形和绘图操作一、坐标:X值:是沿X轴的位置,窗体中最左端是缺省位置0Y值:是沿Y轴的位置,窗体中最上端是缺省位置0X,Y的值可以小于0,也可以大于容器宽度或高度二、坐标值的刻度:缺省使用缇(Twip)为测量单位. 「Twip」中文译为"缇",是一种和屏幕无关的长度单位,目的是为了让应用程序元素输出到不同设备时都能保持一致的计算方式。
打印机的一个点,即我们说的“磅”,相当于20个 Twips,一英吋相当于 1440个Twips, 一公分(厘米)则相当于567 Twips ,也就是说,如果屏幕上某个对象的长度是1440 Twip的话,将会印出一英吋来。
由于我们在屏幕上操作时会习惯用「像素」(也就是我们常说的屏幕分辨率DPI,系统可以设置各种DPI值),所以我们直接输入数字时必须再将「像素」换算成「Twip」。
当DPI设置为96时(系统默认值),1个像素=(1/96)*1440=15 Twip;当DPI设置为120时,1个像素=(1/120)*1440=12 Twip。
当DPI为96时,如果希望窗体的高是「400」像素,宽是「300」像素,属性的设定值就是:Height=400×15=6000 Twip,Width =300×15=4500 Twip.在VisualBasic应用程序中,屏幕(Screen)是一个对象。
其Width和Height属性以Twip为单位反映出屏幕的宽度和高度。
而TwipsPerPixelX和TwipsPerPixelY这两个属性只与硬件有关,而与屏幕上可设定的分辨率无关。
将Width除以TwipsPerPixelX可以计算出屏幕的水平分辨率(像素数),同样将Height除以TwipsPerPixelY 也可以计算出屏幕的垂直分辨率。
要想保持一个窗口或是控件的物理大小不变,只要计算出设计时的分辨率与实际运行时的分辨率的比值,然后根据这个比值来调节窗口和其中的控件的大小和相对位置,以及显示的字体尺寸,就可以保持同一应用程序的窗口在不同的系统下的物理外观(当然在不同尺寸的显示器上只能保持比例不变,物理大小还是不同的)。
VB.NET中的图形处理
![VB.NET中的图形处理](https://img.taocdn.com/s3/m/e174fdc43086bceb19e8b8f67c1cfad6195fe995.png)
中的图形处理的图形处理需要五个环节:第⼀:定义绘图对象Dim g As Graphics '定义绘图对象 g第⼆:定好绘图的区域g = Me.CreateGraphics '将窗体指定为绘画区域g = PictureBox1.creategraphics '将图⽚框指定为绘画区域第三:定义绘图⼯具绘图⼯具分三类,如果是画边型的就定义画笔 如果是填充区域型的就定义画刷 如果是画⽂字就需定义字刷对象举例如下:Dim p As New Pen(Color.Red, 3) '定义颜⾊是红⾊,宽度为3个单位的画笔⼯具Dim sb As New SolidBrush(Color.Purple) '定义颜⾊是紫⾊的画刷⼯具Dim f As New Font("⾪书", 8, FontStyle.Regular) '定义刷⽂字的对象第四:绘制图型绘制直线:g.DrawLine(画笔,起点,终点)绘制矩形:⽅法1: g.DrawRectangle(画笔, 左上⾓横坐标,左上⾓纵坐标, 宽度, ⾼度)⽅法2: g.DrawRectangle(画笔, 矩形区域对象)举例:pt1 = New Point(10, 20) '设置点对象s = New Size(60, 50) '确定⼤⼩对象的范围:宽 60 ⾼ 50rect = New Rectangle(pt1, s) '确定矩形区域的范围:左上⾓横坐标10,纵坐标20,宽60,⾼50 g.DrawRectangle(p, rect) '画矩形,或如下直接书写g.DrawRectangle(Pens.PaleGoldenrod, 10, 20, 60, 50)第五:释放资源p.Dispose() '释放画笔对象g.Dispose() '释放绘图对象 。
第二章VB.NET绘图基础
![第二章VB.NET绘图基础](https://img.taocdn.com/s3/m/79001447c950ad02de80d4d8d15abe23482f03ff.png)
第⼆章绘图基础GDI+( Graphics Device Interface Plus)是 Windows操作系统⽤来执⾏绘画及其他相关图形操作的⼀套⼦系统,是由. Net Framework中的System.Drawing命名空间提供的⼀组通过C++类实现的应⽤程序编程接⼝,主要负责显⽰屏幕和打印设备输出的有关信息,它使开发⼈员可以利⽤ Windows内置的图形功能轻松地创建图形应⽤程序。
作为图形设备接⼝的GDI+使得应⽤开发⼈员在输出屏幕和打印机信息时⽆需考虑具体显⽰设备的细节,只需调⽤GDI+库输出的类的⼀些⽅法即可完成图形操作,真正的绘图⼯作由这些⽅法交给特定的设备驱动程序来完成,GDI+使得图形硬件和应⽤程序相互隔离从⽽使开发⼈员编写与设备⽆关的应⽤程序变得⾮常容易。
本教程将以 中的GDI+的技术来实现各种绘图功能。
GDI+绘图的流程1. 创建 Graphics对象;2. 创建画笔和画刷;3. 使⽤ Graph对象的绘图⽅法绘制图形输出⽂字等;4. 释放 Graphics对象和绘图对象所占⽤的系统资源。
'Form1_Paint是当窗体重绘制图形时候触发,如:窗体初始化、窗体改变⼤⼩,都会触发这个paint事件来完成图形的重画⼯作。
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint'创建 Graphics对象Dim g As Graphics = e.Graphics'创建画刷Dim b As SolidBrush = New SolidBrush(Color.Blue)'创建字体Dim f As Font = New Font("宋体", 15, FontStyle.Bold)'绘制⽂字g.DrawString("Hello,World!", f, b, 30, 60)'释放 Graphics对象和绘图对象所占⽤的系统资源f.Dispose()b.Dispose()g.Dispose()End Sub刨建 Graphics对象在中⽤GDI+创建绘图,必须先创建 Graphics对象。
vb画图板 (3)
![vb画图板 (3)](https://img.taocdn.com/s3/m/b72d3d79366baf1ffc4ffe4733687e21ae45ff72.png)
vb画图板
在VB中实现画图板可以通过以下步骤:
1. 创建一个新的窗体,并设置窗体的标题和大小。
2. 在窗体上添加一个Panel控件,作为画布。
3. 添加鼠标按下、移动和松开的事件处理程序,用于绘制图形。
4. 在鼠标按下事件处理程序中,获取鼠标的起点坐标,并创建一个Graphics对象来绘制图形。
5. 在鼠标移动事件处理程序中,获取鼠标的当前坐标,并根据不同的绘图工具(例如画线、矩形、圆形等)来绘制图形。
6. 在鼠标松开事件处理程序中,释放Graphics对象,并更新画布。
下面是一个简单的示例代码,实现了在画布上绘制直线和矩形的功能:
```vb
Public Class Form1
Dim startPt As Point
Dim endPt As Point
Dim drawShape As String
Private Sub Panel1_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel1.MouseDown
startPt = e.Location
End Sub
Private Sub Panel1_MouseMove(sender As Object, e As MouseEventArgs) Handles Panel1.MouseMove
If e.Button = MouseButtons.Left Then
endPt = e.Location
Select Case drawShape
Case \。
划曲线VB,NET
![划曲线VB,NET](https://img.taocdn.com/s3/m/98dfcf1dcd1755270722192e453610661ed95a69.png)
在实际应用中,很多图形是由点和线构成的,的Graphics 类提供了很多画线图的方法,我们可以使用这些重载了的方法组合出丰富的图案来。
下面我们就来了解下这些绘线图的方法。
一、DrawLine 方法该方法绘制一条连接由坐标对指定的两个点的线条,所以我们需要指定这两个点的坐标,如下所示:DrawLine(pen,x1,y1,x2,y2)或者DrawLine(pen,Point1, Point2)下面示例将在PictureBox控件表面绘制一条直线:Dim g As Graphics = Me.PictureBox1.CreateGraphicsDim mpen As New Pen(Color.Red)g.DrawLine(mpen, 0, 80, 0, 160)也可以使用如下代码来实现一样的效果:Dim g As Graphics = Me.PictureBox1.CreateGraphicsDim mpen As New Pen(Color.Red)Dim p1 As Point = New Point(0, 80)Dim p2 As Point = New Point(0, 160)g.DrawLine(mpen, p1, p2)当然,我们也可以使用DrawLine方法画出更加复杂的图形,如下代码所示:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim g As Graphics = Me.PictureBox1.CreateGraphicsDim mpen As New Pen(Color.Red)Dim i As IntegerFor i = 0 To 160 Step 10g.DrawLine(mpen, 0, 80, i, 0)g.DrawLine(mpen, 0, 80, i, 160)g.DrawLine(mpen, 160, 80, 160 - i, 160)g.DrawLine(mpen, 160, 80, 160 - i, 0)NextEnd Sub运行后效果如下图一所示:图一:使用DrawLine方法画复杂图形二、DrawLines 方法该方法绘制一系列连接一组Point 结构的线段,它按顺序把每个点都连接起来,构成一段曲线,DrawLines的形式如下:DrawLines(Pen, Point())Point()参数就是一个由一系列的点构成的数组。
VB开简易的画图板
![VB开简易的画图板](https://img.taocdn.com/s3/m/3037b1d4afaad1f34693daef5ef7ba0d4b736d4e.png)
VB开简易的画图板功能:VB开简易的画图板,使其具有画图板的各块功能VB 界面如下:图二Option ExplicitDim i, drawact As IntegerDim canline, canpen, canrubber, canenlarge, canellipse, canrectangle, canflood, canget, canbrush As Boolean Dim x0, y0, xnow, ynow, radius0, radius As Single Dim Filename As StringPrivate Sub Form_Load()' 初始化图片框的大小和AutoRedraw属性和窗体的标题Picture3.Width = Picture1.WidthPicture3.Height = Picture1.HeightPicture1.AutoRedraw = TruePicture3.AutoRedraw = TruePicture1.Picture = LoadPicture()Filename = "Untitled"Form1.Caption = FilenameEnd SubPrivate Sub Label2_Click(Index As Integer)' 选择某项操作时,将其下凹看上去像是被按下去的 For i = 0 To Label2.Count - 1Label2(i).BorderStyle = 0NextLabel2(Index).BorderStyle = 1drawact = IndexEnd SubPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)' 当鼠标按下时,对于选择不同的工具执行不同的操作 Select Case drawact' 橡皮Case 0canrubber = TruePicture1.CurrentX = X: Picture1.CurrentY = YPicture1.DrawMode = 13Picture1.DrawWidth = 7' 直线Case 1canline = Truex0 = X: y0 = Yxnow = X: ynow = YPicture1.DrawMode = 7Picture1.DrawWidth = 1' 矩形Case 2canrectangle = Truex0 = X: y0 = Yxnow = X: ynow = YPicture1.DrawMode = 7Picture1.DrawWidth = 2' 椭圆Case 3canellipse = Truex0 = X: y0 = Yxnow = X: ynow = YPicture1.DrawMode = 7Picture1.DrawWidth = 1' 铅笔Case 4canpen = TruePicture1.CurrentX = X: Picture1.CurrentY = YPicture1.DrawMode = 13' 刷子Case 5canbrush = TruePicture1.CurrentX = X: Picture1.CurrentY = YPicture1.DrawMode = 13Picture1.DrawWidth = 5' 油漆桶Case 6Picture1.BackColor = Label1.BackColor' 放大镜Case 7canenlarge = Truex0 = X: y0 = Yxnow = X: ynow = YPicture1.DrawMode = 7Picture1.DrawWidth = 1End SelectEnd SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)' 在标签中显示当前鼠标在画板中的位置Label3.Caption = "X: " + CStr(X) + Chr(13) + Chr(10) + "Y: " + CStr(Y)' 当鼠标移动时,对于选择不同的工具执行不同的操作 Select Case drawact' 橡皮Case 0If canrubber ThenPicture1.Line -(X, Y), vbWhiteEnd If' 直线Case 1If canline ThenPicture1.Line (x0, y0)-(xnow, ynow), Not (Picture1.ForeColor)Picture1.Line (x0, y0)-(X, Y), Not (Picture1.ForeColor)xnow = X: ynow = YEnd If' 矩形Case 2If canrectangle ThenPicture1.Line (x0, y0)-(xnow, ynow), Not (Picture1.ForeColor), BPicture1.Line (x0, y0)-(X, Y), Not (Picture1.ForeColor), Bxnow = X: ynow = YEnd If' 椭圆Case 3radius0 = Sqr((xnow - x0) ^ 2 + (ynow - y0) ^ 2)radius = Sqr((X - x0) ^ 2 + (Y - y0) ^ 2)If canellipse ThenPicture1.Circle (x0, y0), radius0, Not (Picture1.ForeColor)Picture1.Circle (x0, y0), radius, Not (Picture1.ForeColor)xnow = X: ynow = YEnd If' 铅笔Case 4If canpen ThenPicture1.Line -(X, Y), Picture1.ForeColorEnd If' 刷子Case 5If canbrush ThenPicture1.Line -(X, Y), Picture1.ForeColorEnd If' 油漆桶Case 6' do nothing' 放大镜Case 7If canenlarge ThenPicture1.Line (x0, y0)-(xnow, ynow), Not (Picture1.ForeColor), BPicture1.Line (x0, y0)-(X, Y), Not (Picture1.ForeColor), Bxnow = X: ynow = YEnd IfEnd SelectEnd SubPrivate Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)' 当鼠标放开时,对于选择不同的工具执行不同的操作 Select Case drawactCase 1canline = FalsePicture1.Line (x0, y0)-(xnow, ynow)Picture1.DrawMode = 13Picture1.Line (x0, y0)-(xnow, ynow), Picture1.ForeColorCase 2canrectangle = FalsePicture1.Line (x0, y0)-(xnow, ynow), Not (Picture1.ForeColor), BPicture1.DrawMode = 13Picture1.Line (x0, y0)-(xnow, ynow), Picture1.ForeColor, BCase 3canellipse = FalsePicture1.Circle (x0, y0), radius, Not (Picture1.ForeColor)Picture1.DrawMode = 13Picture1.Circle (x0, y0), radius, Picture1.ForeColorCase 4canpen = FalseCase 5canbrush = FalseCase 7canenlarge = FalsePicture1.Line (x0, y0)-(xnow, ynow), Not (Picture1.ForeColor), BIf (xnow - x0) * (ynow - y0) <> 0 ThenPicture3.PaintPicture Picture1.Image, 0, 0, Picture3.Width, Picture3.Height, x0, y0, (xnow - x0), (ynow - y0)Picture1.PaintPicture Picture3.Image, 0, 0End IfEnd SelectEnd SubPrivate Sub Picture2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)' 通过point方法拾取颜色,并设定为前景色Picture1.ForeColor = Picture2.Point(X, Y)Label1.BackColor = Picture2.Point(X, Y)End SubPrivate Sub MNew_Click(Index As Integer)' 新建一个图画Picture1.Picture = LoadPicture()Filename = "Untitled"Form1.Caption = FilenameEnd SubPrivate Sub MSave_Click()' 设置过滤器CommonDialog1.Filter = "bmp文件|*.bmp|所有文件|*.*"' 设置缺省过滤器CommonDialog1.FilterIndex = 2If Filename = "Untitled" Then'如果文件尚未命名,则显示保存对话框CommonDialog1.ShowSaveFilename = CommonDialog1.FilenameIf Filename <> "" ThenSavePicture Picture1.Image, FilenameEnd IfElse'否则直接保存SavePicture Picture1.Image, FilenameEnd IfForm1.Caption = FilenameEnd SubPrivate Sub MExit_Click(Index As Integer)' 退出程序EndEnd Sub1.电脑上必须要先Microsoft Visual Studio(也就是VB软件)2.用VB软件设置窗口如上(图二)3.各个Command对应的VB代码如下:运行VB时,需要先打开SolidWorks一个新零件窗口,然后运行VB,点击界面按钮即可运行结果:完美实现对应功能。
VB.NET实验报告(五)
![VB.NET实验报告(五)](https://img.taocdn.com/s3/m/4f8eadf5a8956bec0875e32a.png)
xx 大学本科生实验报告(五)姓名:XXX学院: 计算机科学学院专业: 信息管理与信息系统班级:2011 级信管班实验课程名称:程序设计实验日期:2012 年 5 月18 日指导教师及职称: XXX实验成绩:开课时间:2012-2013 学年第二学期实验管理中心印制实验题目图形应用程序开发小组合作2.掌握图形坐标系的变换方法。
3.掌握GDI+中的绘图工具。
4.掌握常用几何图形绘制方法。
5.掌握简单艺术图形的绘制方法。
6.了解GDI+的图像处理功能。
二.实验环境Microsoft Visual Studio 2008三、实验内容与步骤一、利用方法DrawEllipse在窗体上绘制艺术图案。
构造图案的算法为:把一个半径为r的圆周分为n份,以这个n个等分点为圆心,r1为半径绘制n个圆<径。
(1)进入应用程序的后,根据题目要求设计好窗体;(2)编辑代码,进行代码的调试,主要代码如下所示:# Buttonl ■ r dkkIn二巾广乜oTs teri. I ithD)gra.vkJi^亓5宅"< B:r#rieg:L'E-^C「氏2"! 玄EaHl_L ~~Suh BuK I onl_□ i cb'£B>¥al “證加A? S JTJ I H- Otjert. t Xs 呂”I R EvAfli^rci'l Kaidh. BicU i,jiit.CLidkI in £J L I Gruphi os 二IT &. MAaphi cs Um > Al f ML- lev P<JifE«L«>r.filllt) lini r M)S KP^I-= 10Q Hin JL ill I A I E現q* = 旳Jhn t 上^LKLtLe = 3M / i(Trmil H1^T TITII fflrn 勿1"1”1 f ir i - 1 r* nfin x 血9 1 (t > i)■in y hi Sin^il« r * $i n *= i.]a - E- 60T ■ y ■石Dr祚211曙応5# N y,辺GDIp SLEP41& 0 耳Diurps'ii-e [)- EW討-Ini Q4cc(3)实验结果如下图所示:□ syll- 1心|回|^3HUV J I^B二、设计应用练习,练习基本绘图指令。
使用vb.net绘制简单的饼图,柱状图,折线图
![使用vb.net绘制简单的饼图,柱状图,折线图](https://img.taocdn.com/s3/m/c445102a6d85ec3a87c24028915f804d2b1687cd.png)
使用绘制简单的饼图,柱状图,折线图关键词:使用绘制简单的饼图=================Part1================== TestDrawGraphic.aspx:在网页上放三个按钮,定义其单击事件到后台写代码'=================Part2================== 'TestDrawGraphic.aspx.vb'使用绘制简单的饼图,柱状图,折线图Imports System.DrawingImports System.Drawing.Drawing2DImports System.Drawing.imagingPublic Class testOWCInherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 "'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()End SubProtected WithEvents Button1 As System.Web.UI.WebControls.ButtonProtected WithEvents Button2 As System.Web.UI.WebControls.ButtonProtected WithEvents Button3 As System.Web.UI.WebControls.Button'注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.ObjectPrivate Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init'CODEGEN: 此方法调用是 Web 窗体设计器所必需的'不要使用代码编辑器修改它。
vbnet graphic 简单的画图程序
![vbnet graphic 简单的画图程序](https://img.taocdn.com/s3/m/bc8f37b4960590c69ec376a9.png)
graphic 简单的画图程序[vb]Public Class Form1Dim DrawState As BooleanDim PreX As SingleDim PreY As SingleDim eP As New Pen(Color.Black, 3) ' 构造黑色画笔,并将它赋给对象变量eP'Dim g As Graphics = Me.CreateGraphics ' 在窗体上构造一块画布,并将它赋给对象变量gPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load' 将DrawState初始化为False,表示提笔DrawState = FalseEnd SubPrivate Sub Form1_MouseDown(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseDown' 当鼠标左键被按下时,把DrawState设为True,表示落笔开始画线Dim g As Graphics = Me.CreateGraphicsIf e.Button = Windows.Forms.MouseButtons.Left ThenDrawState = True ' 设置画图状态PreX = e.X ' PreX和PreY保存了线条的起点。
PreY = e.YEnd If' 当按住鼠标右键时,画一个直径为50的圆If e.Button = Windows.Forms.MouseButtons.Right Theng.DrawEllipse(eP, e.X - 25, e.Y - 25, 100, 100)End IfEnd SubPrivate Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove' 当鼠标移动时,如果处于画线状态,则在(PreX,PreY)与(X,Y)之间画一条直线Dim g As Graphics = Me.CreateGraphicsIf DrawState = True Theng.DrawLine(eP, PreX, PreY, e.X, e.Y)PreX = e.XPreY = e.YEnd IfEnd SubPrivate Sub Form1_MouseUp(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseUp' 当释放鼠标左键时,解除画线状态If e.Button = Windows.Forms.MouseButtons.Left ThenDrawState = FalseEnd IfEnd SubEnd ClassPublic Class Form1Dim DrawState As BooleanDim PreX As SingleDim PreY As SingleDim eP As New Pen(Color.Black, 3) ' 构造黑色画笔,并将它赋给对象变量eP'Dim g As Graphics = Me.CreateGraphics ' 在窗体上构造一块画布,并将它赋给对象变量gPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load' 将DrawState初始化为False,表示提笔DrawState = FalseEnd SubPrivate Sub Form1_MouseDown(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseDown' 当鼠标左键被按下时,把DrawState设为True,表示落笔开始画线Dim g As Graphics = Me.CreateGraphicsIf e.Button = Windows.Forms.MouseButtons.Left ThenDrawState = True ' 设置画图状态PreX = e.X ' PreX和PreY保存了线条的起点。
第7章-VB-NET图形程序设计
![第7章-VB-NET图形程序设计](https://img.taocdn.com/s3/m/85b25b4d6f1aff00bfd51e33.png)
可使用 类的 属性指定除像素以外的其他度 量单位。下面的示例从 (0, 0) 至 (2, 1) 绘制 线条,其中点 (2, 1) 位于点 (0, 0) 的右边 2 英寸和下边 1 英寸处:象
需要先创建 对象,然后才可以使用 绘制线 条和形状、呈现文本或显示与操作图像。 对 象表示 绘图表面,是用于创建图形图像的 对象。
7.2 基础
使用三个坐标空间:世界坐标系、页面坐标系和设备坐标系。 世界坐标系是用于建立特殊图形世界模型的坐标系,也是在
中传递给方法的坐标系。 页面坐标系是指绘图图面(如窗体或控件)使用的坐标系。 设备坐标系是在其上进行绘制的物理设备(如屏幕或纸张)
所使用的坐标系。 在 可以在屏幕上绘制线条之前,坐标先要经过一系列变换。
5. 方法: 填充由一对坐标、一个宽度和一个高度 指定的矩形的内部。
6. 方法: 填充边框所定义的椭圆的内部,该边框 由一对坐标、一个宽度和一个高度指定。
7. 方法:在指定位置并且按原始大小绘制指定 的
8. 方法: 通过平移来更改坐标系统的原点。
知识点4 类
定义用于绘制直线和曲线的对象。
知识点5 类
举例:
g ' 把图形对象应用到窗体 g= 或: 下面的示例演示如何使用 对象: ("C:\ \\\") g = ()
对象在创建后,可用于绘制线条和形状、呈 现文本或显示与操作图像。与 对象一起使用 的主要对象有:
类 用于绘制线条、勾勒形状轮廓或呈现其他 几何表示形式。
类 用于填充图形区域,如实心形状、图像或 文本。
处理图形包括两个步骤: 1.创建 对象。 2.使用 对象绘制线条和形状、呈现文本或
显示与操作图像。
创建图形对象:
第7章 VB NET图形程序设计
![第7章 VB NET图形程序设计](https://img.taocdn.com/s3/m/c1d57408b52acfc789ebc91e.png)
任务1 简单图形绘制
可使用 Graphics 类的 PageUnit 属性指定除 像素以外的其他度量单位。下面的示例从 (0, 0) 至 (2, 1) 绘制线条,其中点 (2, 1) 位于点 (0, 0) 的右边 2 英寸和下边 1 英寸处: myGraphics.PageUnit = GraphicsUnit.Inch myGraphics.DrawLine(myPen, 0, 0, 2, 1)
第七章 图形程序设计
7.+ 是使程序员能够编写与设备无关的 应用程序的 Graphics Device Interface (图形设备接口) 。 通过使用 GDI+,可以创建图形、绘制文 本以及将图形图像作为对象操作。
Graphics 类包含许多绘制操作方法和图像 操作方法。下面列出了一些常用的方法: 1.绘制直线的方法:DrawArc、 DrawBezier、DrawEllipse、DrawImage、 DrawLine、DrawPolygon、DrawRectangle 和 DrawString。 2.填充形状的方法:FillClosedCurve、 FillEllipse、FillPath、FillPolygon 和 FillRectangle。 3.清除绘图图面的方法:Clear。 4.从图像创建新的 Graphics 对象的方法: FromImage。
4.Graphics.DrawString 方法:在指定位置并 且用指定的 Brush 和 Font 对象绘制指定的文 本字符串。 5. Graphics.FillRectangle 方法: 填充由一对坐 标、一个宽度和一个高度指定的矩形的内部。 6. Graphics.FillEllipse 方法: 填充边框所定义 的椭圆的内部,该边框由一对坐标、一个宽度 和一个高度指定。 7.Graphics.DrawImage 方法:在指定位置 并且按原始大小绘制指定的 Image 8. Graphics.TranslateTransform 方法: 通过 平移来更改坐标系统的原点。
VBNET程序设计进阶:绘图方法
![VBNET程序设计进阶:绘图方法](https://img.taocdn.com/s3/m/1c144304376baf1ffd4fad10.png)
Dispose
功能:释放绘图对象 格式:绘图对象.Dispose 范例:g.Dispose
程序设计教程
程序设计教程
程序设计教程
程序设计教程
程序设计教程
程序设计教程
程序设计教程
程序设计教程
Graphics常用方法
方法名 Clear Refresh
说明
功能:清除画布对象内容并设置画布颜来自 格式:画布对象.Clear(颜色) 范例:g.Clear(ME.BackColor)
‘将画布对象g清理为窗体背景色
功能:清除绘图控件的内容并设置默认颜色 格式:控件对象.Refresh() 范例:PictureBox1.Refresh
程序设计教程
程序设计教程
1.Graphics类
作用:确定在何处画图.可以是窗体、图片框、标签等控件对象 创建形式:对象. CreatGraphics()
Dim g As Graphics=Me.CreatGraphics( ) Dim g As Graphics=PictureBox1.CreatGraphics( )
VB的绘图
![VB的绘图](https://img.taocdn.com/s3/m/9786f92458fb770bf78a55cd.png)
VB的繪圖繪圖的基本觀念輸出圖形最簡單的方式是在表單上佈置PictureBox控制項,然後把繪製好的圖檔設定給PictureBox,不過此方式不能動態繪圖,功能有限,所以必須使用Graphics物件。
VB繪圖的三道基本程序1.建立或取得Graphics物件(繪圖物件)。
2.利用Graphics物件的DrawLine、DrawString、DrawImage…等方法繪製圖形。
3.釋回Graphics物件所佔用的系統資源。
Private Sub Button1_Click(...) Handles Button1.Click Dim g As Graphics = Me.CreateGraphics( )g.DrawString ("Hello", Me.Font, Brushes.Black, 0, 0)g.DrawImage (New Bitmap ("D:\課程大綱及教材\_電腦輔助控制\範例\pic_ball\01.gif"), 0, 15)g.Dispose()End SubVB 繪圖之初體驗1.建立一Windows 應用程式專案。
2.在表單上佈置一個Button ,然後在Button1_Click 事件程序中撰寫以下程式:Dim g as Graphics g=Me.CreateGraphics( )建立g 為一Graphics 物件位置VB繪圖之初體驗3.執行程式,然後按下Button1按鈕,結果如下圖。
(註:執行之前,請確定圖片檔案的位置)Graphics 物件的建立敘述:Dim 繪圖物件As Graphics = Me.CreateGraphics()或Dim 繪圖物件As Graphics = 控制元件名.CreateGraphics()例一:(在表單上繪圖)Dim g As Graphics = Me.CreateGraphics()g.DrawImage(New Bitmap(“D:\課程大綱及教材\_電腦輔助控制\範例\dolphin.jpg"),0,15)'DrawImage所繪製的圖形會顯示在表單上例二:(在PictureBox上繪圖)Dim g As Graphics = PictureBox1.CreateGraphics()g.DrawImage(New Bitmap(“D:\課程大綱及教材\_電腦輔助控制\範例\dolphin.jpg"),0,15)'DrawImage所繪製的圖形會顯示在PictureBox上線段及邊框的描繪 DrawLine(線段)DrawRectangle(矩形及正方形) DrawEllipse(橢圓形及圓形)g.DrawLine(Pen 物件, x1, y1, x2, y2)第一點座標Graphics 物件第二點座標DrawLine 方法¾其他格式:g.DrawLine(Pen 物件, New Point(x1, y1), New Point(x2, y2))或g.DrawLine(Pen 物件, New PointF(x1, y1), New PointF(x2, y2))PointF(x1, y1)可接受實數?DrawLine方法與Pen 物件 DrawLine的第一個參數是Pen 物件,而建立Pen 物件的方法如下:1)Pen物件= New Pen(顏色)2)Pen物件= New Pen(顏色, 畫筆寬度)3)Pen物件= New Pen(Brush物件)4)Pen物件= New Pen(Brush物件, 畫筆寬度)實例:Dim p As Pen'宣告一個Pen類別的變數pp = New Pen(Color.Black)'建立單點寬, 顏色為黑色的畫筆p = New Pen(Color.Black, 3)'建立3點寬, 顏色為黑色的畫筆p = New Pen(Color.Black, 7)'建立7點寬, 顏色為黑色的畫筆使畫線程式具常駐功能1.建立一Windows應用程式專案。
用VB编写画图程序
![用VB编写画图程序](https://img.taocdn.com/s3/m/5c57b1d89e31433239689350.png)
4.代码设计(1)引入命名空间:Imports System.Drawing.Drawing2D(2)在FrmPaint类里定义全局变量和mSelect枚举结构:1.Private g As Graphics '绘图句柄2.Private pstart As Point, pend As Point '定义画图的起始点,终点3.Private mChoice As Integer'选择图形枚举4.Private mWidth As Integer'画笔宽度5.Private mIcon As Icon '用户选择图标6.Private Enum mSelect '选择图形类别枚举7. Pencil '铅笔8. Line '直线9. Ellipse '椭圆10. FillEllipse '填充椭圆11. StyleEllipse '风格椭圆12. Rec '矩形13. FillRec '填充矩形14. StyleRec '风格矩形15. Icon '图标16. Eraser '橡皮17.End Enum(3)在FrmPaint的Load事件中初始化全局变量和Graphics对象:1.Private Sub FrmPaint_Load(ByVal sender As System.Object, _2.ByVal e As System.EventArgs) Handles MyBase.Load3.4. g = Me.picPaint.CreateGraphics '获取PictureBox的绘图句柄5. mChoice = mSelect.Pencil '默认选择选铅笔作为绘图工具6. mWidth = 1 '初始化画笔宽度7.End Sub(4)定义转换坐标起点和终点的过程Convert_Point()。
基于VBGDI入门之使用Graphics对象绘制线图
![基于VBGDI入门之使用Graphics对象绘制线图](https://img.taocdn.com/s3/m/0996c19fcc22bcd126ff0c89.png)
GDI+入门之使用Graphics对象绘制线图在实际应用中,很多图形是由点和线构成的,的Graphics 类提供了很多画线图的方法,我们可以使用这些重载了的方法组合出丰富的图案来。
下面我们就来了解下这些绘线图的方法。
一、DrawLine方法该方法绘制一条连接由坐标对指定的两个点的线条,所以我们需要指定这两个点的坐标,如下所示:DrawLine(pen,x1,y1,x2,y2)或者DrawLine(pen,Point1, Point2)下面示例将在PictureBox控件表面绘制一条直线:Dim g As Graphics = Me.PictureBox1.CreateGraphicsDim mpen As New Pen(Color.Red)g.DrawLine(mpen, 0, 80, 0, 160)也可以使用如下代码来实现一样的效果:Dim g As Graphics = Me.PictureBox1.CreateGraphicsDim mpen As New Pen(Color.Red)Dim p1 As Point = New Point(0, 80)Dim p2 As Point = New Point(0, 160)g.DrawLine(mpen, p1, p2)当然,我们也可以使用DrawLine方法画出更加复杂的图形,如下代码所示:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim g As Graphics = Me.PictureBox1.CreateGraphicsDim mpen As New Pen(Color.Red)Dim i As IntegerFor i = 0 To 160 Step 10g.DrawLine(mpen, 0, 80, i, 0)g.DrawLine(mpen, 0, 80, i, 160)g.DrawLine(mpen, 160, 80, 160 - i, 160)g.DrawLine(mpen, 160, 80, 160 - i, 0)NextEnd Sub运行后效果如下图一所示:图一:使用DrawLine方法画复杂图形二、DrawLines方法该方法绘制一系列连接一组Point 结构的线段,它按顺序把每个点都连接起来,构成一段曲线,DrawLines的形式如下:DrawLines(Pen, Point())Point()参数就是一个由一系列的点构成的数组。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
graphic 简单的画图程序[vb]Public Class Form1Dim DrawState As BooleanDim PreX As SingleDim PreY As SingleDim eP As New Pen(Color.Black, 3) ' 构造黑色画笔,并将它赋给对象变量eP'Dim g As Graphics = Me.CreateGraphics ' 在窗体上构造一块画布,并将它赋给对象变量gPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load' 将DrawState初始化为False,表示提笔DrawState = FalseEnd SubPrivate Sub Form1_MouseDown(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseDown' 当鼠标左键被按下时,把DrawState设为True,表示落笔开始画线Dim g As Graphics = Me.CreateGraphicsIf e.Button = Windows.Forms.MouseButtons.Left ThenDrawState = True ' 设置画图状态PreX = e.X ' PreX和PreY保存了线条的起点。
PreY = e.YEnd If' 当按住鼠标右键时,画一个直径为50的圆If e.Button = Windows.Forms.MouseButtons.Right Theng.DrawEllipse(eP, e.X - 25, e.Y - 25, 100, 100)End IfEnd SubPrivate Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove' 当鼠标移动时,如果处于画线状态,则在(PreX,PreY)与(X,Y)之间画一条直线Dim g As Graphics = Me.CreateGraphicsIf DrawState = True Theng.DrawLine(eP, PreX, PreY, e.X, e.Y)PreX = e.XPreY = e.YEnd IfEnd SubPrivate Sub Form1_MouseUp(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseUp' 当释放鼠标左键时,解除画线状态If e.Button = Windows.Forms.MouseButtons.Left ThenDrawState = FalseEnd IfEnd SubEnd ClassPublic Class Form1Dim DrawState As BooleanDim PreX As SingleDim PreY As SingleDim eP As New Pen(Color.Black, 3) ' 构造黑色画笔,并将它赋给对象变量eP'Dim g As Graphics = Me.CreateGraphics ' 在窗体上构造一块画布,并将它赋给对象变量gPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load' 将DrawState初始化为False,表示提笔DrawState = FalseEnd SubPrivate Sub Form1_MouseDown(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseDown' 当鼠标左键被按下时,把DrawState设为True,表示落笔开始画线Dim g As Graphics = Me.CreateGraphicsIf e.Button = Windows.Forms.MouseButtons.Left ThenDrawState = True ' 设置画图状态PreX = e.X ' PreX和PreY保存了线条的起点。
PreY = e.YEnd If' 当按住鼠标右键时,画一个直径为50的圆If e.Button = Windows.Forms.MouseButtons.Right Theng.DrawEllipse(eP, e.X - 25, e.Y - 25, 100, 100)End IfEnd SubPrivate Sub Form1_MouseMove(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseMove' 当鼠标移动时,如果处于画线状态,则在(PreX,PreY)与(X,Y)之间画一条直线Dim g As Graphics = Me.CreateGraphicsIf DrawState = True Theng.DrawLine(eP, PreX, PreY, e.X, e.Y)PreX = e.XPreY = e.YEnd IfEnd SubPrivate Sub Form1_MouseUp(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseUp' 当释放鼠标左键时,解除画线状态If e.Button = Windows.Forms.MouseButtons.Left ThenDrawState = FalseEnd IfEnd SubEnd Class改法1[vb]Public Class Form1Dim DrawState As BooleanDim PreX As SingleDim PreY As SingleDim eP As New Pen(Color.Black, 3) ' 构造黑色画笔,并将它赋给对象变量ePDim g As Graphics ' 在窗体上构造一块画布,并将它赋给对象变量gPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load' 将DrawState初始化为False,表示提笔DrawState = FalseEnd SubPrivate Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown' 当鼠标左键被按下时,把DrawState设为True,表示落笔开始画线'Dim g As Graphics = Me.CreateGraphicsIf e.Button = Windows.Forms.MouseButtons.Left ThenDrawState = True ' 设置画图状态PreX = e.X ' PreX和PreY保存了线条的起点。
PreY = e.YEnd If' 当按住鼠标右键时,画一个直径为50的圆If e.Button = Windows.Forms.MouseButtons.Right Theng.DrawEllipse(eP, e.X - 25, e.Y - 25, 100, 100)End IfEnd SubPrivate Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove' 当鼠标移动时,如果处于画线状态,则在(PreX,PreY)与(X,Y)之间画一条直线'Dim g As Graphics = Me.CreateGraphicsIf DrawState = True Theng.DrawLine(eP, PreX, PreY, e.X, e.Y)PreX = e.XPreY = e.YEnd IfEnd SubPrivate Sub Form1_MouseUp(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseUp' 当释放鼠标左键时,解除画线状态If e.Button = Windows.Forms.MouseButtons.Left ThenDrawState = FalseEnd IfEnd SubPrivate Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resizeg = Me.CreateGraphicsEnd SubEnd ClassPublic Class Form1Dim DrawState As BooleanDim PreX As SingleDim PreY As SingleDim eP As New Pen(Color.Black, 3) ' 构造黑色画笔,并将它赋给对象变量ePDim g As Graphics ' 在窗体上构造一块画布,并将它赋给对象变量gPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load' 将DrawState初始化为False,表示提笔DrawState = FalseEnd SubPrivate Sub Form1_MouseDown(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseDown' 当鼠标左键被按下时,把DrawState设为True,表示落笔开始画线'Dim g As Graphics = Me.CreateGraphicsIf e.Button = Windows.Forms.MouseButtons.Left ThenDrawState = True ' 设置画图状态PreX = e.X ' PreX和PreY保存了线条的起点。