精华内容
下载资源
问答
  • 现在我想在某个软件上加个二维坐标(GDI)以方便测量(被加坐标的软件不是自己做的),我想到用sendmessage函数,但是不知道怎么用,请高手赐教!!
  • 这是我第一个图形的代码段![![图片说明](https://img-ask.csdn.net/upload/201705/23/1495522494_98453.png)图片说明](https://img-ask.csdn.net/upload/201705/23/1495522486_75591.png)
  • VB播放Gif 动画

    热门讨论 2013-03-13 18:05:03
    VB播放Gif 动画,简单的图形读取播放功能,GIF是一种简易的动画图片格式,在VB中也有较广泛的应用,在VB如何读取和显示GIF动...
  • vb6中,可以很简单的在窗体上画画,通过设置窗体的autoredraw属性还可以保持绘制的图形不会因为窗体超出屏幕边界等情况消失。 那.net里面如何画画能让窗体不消失,并且能用timer时钟控件做出动画一般的效果呢? ...

    哈里最近在使用vb.net中,遇到很多问题。其中有一个是.net窗体上的绘制问题。
    在vb6中,可以很简单的在窗体上画画,通过设置窗体的autoredraw属性还可以保持绘制的图形不会因为窗体超出屏幕边界等情况消失。
    那.net里面如何画画能让窗体不消失,并且能用timer时钟控件做出动画一般的效果呢?
    例如下面这样:

    在这里插入图片描述

    我们新建一个项目,在窗体上新建一个picturebox控件,把名字改成pic,autosize属性选为true。
    然后新建一个timer控件,enabled属性设置为true。
    最后窗体代码如下:

    Public Class Form1
        Private x As Single = 100, y As Single = 50, x2 As Single = 300
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Pic.Image = New Bitmap(200, 200) '用空白图片填充pic控件的图片属性,这里是为了在下次timer内函数作画前,图像不会因为各种原因消失
            Dim g As Graphics = Graphics.FromImage(Pic.Image) '将我们作画的画板选用为pic控件图片属性中的那张图片
            g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias '图像抗锯齿
            Dim p As New Pen(Brushes.Gold, 2) '定义p为宽度2的金色笔
            g.DrawEllipse(p, x, y, 100, 100) '在画板上画一个长宽都是100的椭圆(其实就是直径100的圆),椭圆的左上角坐标是(x,y)
            g.DrawEllipse(p, x2, y, 100, 100)
            x -= 1 '每次迭代圆1的横坐标-1
            x2 -= 1 '圆2横坐标-1
            If x <= -200 Then '圆跑到左边看不到的地方了就重置到右边看不到的地方等待出现
                x += 400
            End If
            If x2 <= -200 Then
                x2 += 400
            End If
            '下面四条线画出一个正方形方框
            g.DrawLine(Pens.Red, 0, 0, 199, 0) '用红色的笔在画板上画一条从坐标0,0到坐标199,0的直线
            g.DrawLine(Pens.Red, 199, 0, 199, 199)
            g.DrawLine(Pens.Red, 199, 199, 0, 199)
            g.DrawLine(Pens.Red, 0, 199, 0, 0)
            Me.Refresh() '刷新窗体使我们的画板内容绘制到显示器上
        End Sub
    End Class
    

    以上。

    欢迎补充及指正~

    展开全文
  • 由于LabVIEW是区别于传统文本编程语言的图形化编程语言,因此很多人在刚接触LabVIEW时总是觉得无从下手,其实LabVIEW远比纷繁复杂的C语言、VC、VB好学多了,因为学习LabVIEW不需要去记忆那些和你关心的事情无关的...

    由于LabVIEW是区别于传统文本编程语言的图形化编程语言,因此很多人在刚接触LabVIEW时总是觉得无从下手,其实LabVIEW远比纷繁复杂的C语言、VC、VB好学多了,因为学习LabVIEW不需要去记忆那些和你关心的事情无关的语法、定义之类的东西。她的门槛也非常低,你可以没学过任何编程语言就开始学习LabVIEW。

    01找一本好书入门

    入门主要是熟悉基于数据流的编程方法、控件、数组、簇、程序结构、子VI等等,入门后就可以根据你的需要跳着看了.书最好是纸质的,电子版让人头晕,我电脑里堆满了电子版书籍,但没有一本我好好看过。在我学习LabVIEW的时候,中文图书比较少,我主要看的是英文版的LabVIEW高级编程

    01

    多学习实例。

    我在学习LabVIEW入门后,以后的提高可以说完全是靠LabVIEW自带的实例和帮助手册完成的。

    当时,我需要编写一个规模非常大、功能也很复杂的系统。我并没有依靠自己的现有知识立即着手去编写这个系统,而是将LabVIEW所有自带的实例都看了个遍,当我把所有的知识点都成竹在胸后,我才开始整个系统的设计,这样才最终保证了整个系统的完美实现。

    不过LabVIEW很多自带的实例看上去比较复杂,因为很多都涉及一些专业的算法,并有很多附加的功能。

    03

    多尝试编写自己的小程序

    这也许是学习任何语言都必要的途径。对于LabVIEW这种操作性很强的编程语言来说更是如此。只有当你写出的程序能实现你设想的功能时,也许你才能真正理解你的程序,因为在写程序的过程中就是一个不断加深理解的过程。因此我建议初学者尽量去试着编写代码,即使是照葫芦画瓢也是好的。

    04

    对于硬件相关的问题,最好直接问NI工程师。

    由于硬件问题针对性太强,任何一本教程都不可能去全部涉及。一般情况下主要参考硬件手册,但是仍然解决不了问题时,你完全没有必要在那里死扛,打个电话给NI工程师,也许你的问题很快就能得到解决。NI工程师都是很不错的,非常耐心,而且都是一副不解决问题誓不罢休的样子,狂赞!

    能想到的就是这些了。说实话,LabVIEW是我所学习过的编程语言中最简单易学的了,我也想象不出将来还会出现比LabVIEW更简单但还能够如此强大的编程语言。我相信你只要能用心学上一个星期,你就会对LabVIEW爱不释手的!

    6785200617c0273289c45b338996c7b3.png

    直播预告

    初学 LabVIEW无从下手?教你如何快速入门

    直播讲师:李治

    直播时间:2019年4月17日20:00

    1

    主题简介及亮点

    LabVIEW是自动化领域使用最广的开发平台,目前比较热门的方向主要有机器视觉、系统集成、仪器仪表开发等。LabVIEW工程师基数较少,而岗位数量日益增多,LabVIEW工程师基本处于供不应求的状态。薪资待遇方面,不少制造业、科技企业等公司所给报酬也不菲。

    2

    直播大纲

    1、LabVIEW是什么

    2、LabVIEW能做什么

    3、怎么学习LabVIEW

    4、初识LabVIEW

    3

    参与直播观众将获得哪些知识点

    能帮助用户更快的掌握LabVIEW,了解LabVIEW的编程思路。

    现在凡报名本次直播课程,扫下方二维码进群,在朋友圈转发本次直播的海报,保留四小时以上,便可获取以下福利:

    1、免费观看直播特权

    2、技术交流

    若扫码进群失败,可添加管理员微信:fucaiyu007

    点击“阅读原文”,即可快速免费报名

    展开全文
  • 我刚学vb.net不久,有很多都不是很了解,在这里请教各位前辈大佬,如何图片中不完整的图形有什么好的办法呢?又怎么让它实现动态效果呢? 谢谢各位。 如果有其他的绘图方法,或者使用线程什么的,请给我一些...
  • 一个VB仿写的AutoCAD软件源代码,可绘制平面几何图形,可直线、曲线和一些几何图形等...本程序可帮助初学者了解VB如何编写出简单的几何图形绘制程序,了解一些图形绘制函数的用法。详细的代码编写请下载参考源代码。
  •  全新的图形引擎与 AI 算法,高效流畅地绘出任何一副美丽的图像。  IDE:VisualStudio  Language:VB.NET / C#  Graphics:EDGameEngine 第一节 背景  背景是图画里衬托主体事物的景象。 ...

    说明

      本文发布时间较早,查看最新动态请关注 GitHub 项目。(2019 年 6 月 注)

    准备

      全新的图形引擎与 AI 算法,高效流畅地绘出任何一副美丽的图像。

      IDE:VisualStudio

      Language:VB.NET / C#

      Graphics:EDGameEngine

    第一节 背景

      背景是图画里衬托主体事物的景象。

    图1-1 先画个蓝蓝的天空

      蓝天、白云和大地,程序最擅长这种色调单一的涂抹了。

    第二节 轮廓

      轮廓是物体的外周或图形的外框。

    图2-2 勾勒人物和衣饰轮廓

      现在 AI 要控制笔触大小和颜色,让图像的主体显现出来。

    第三节 光影

      光影是物体在光的照射下呈现出明与暗的关系。

    图3-1 光影提升画面质感

      AI 可不懂什么是光影,在上一步的基础上优化细节即可。

    第四节 润色

      润色是增加物体本身及其周围的色彩。

    图4-1 画面润色

      这是关键一步,AI需要将丢失的颜色细节补缺回来。

    第五节 成型

      大功告成!前面所有的步骤都是为这一步铺垫。

    图5-1 人物已经栩栩如生啦

      事实上 AI 只进行这一步也可以画出完整的图像,但没有过渡会显得生硬。

    第六节 算法

      算法思路很简单,计算画笔轨迹后一遍遍重绘,感觉上是人类画手的效果。 

      不再是二值化

      因为现在要绘制全彩图像,将图像划分为只有黑和白的效果已经没有什么意义,二值化不再适用

      适用的方法是将 RGB 颜色空间划分为若干个颜色子空间,然后逐个处理一幅图像中属于某个子空间的区域

      自动循迹

      循迹算法没有大的变动,仍是早前博客里贴出的代码

      彩色图像线条较短,可以不再计算点周围的权值用来中断轨迹

      重绘

      程序先选择笔触较大、颜色淡的画笔绘制一遍,然后在这基础上逐步减小笔触并加深色彩

      直接按照标准笔触可以一遍成型,但会显得突兀和生硬,毕竟这个AI不是真的在思考如何画一幅图像

    Imports System.Numerics
    ''' <summary>
    ''' 表示自动循迹并生成绘制序列的AI
    ''' </summary>
    Public Class SequenceAI
        ''' <summary>
        ''' 线条序列List
        ''' </summary>
        ''' <returns></returns>
        Public Property Sequences As List(Of PointSequence)
        ''' <summary>
        ''' 扫描方式
        ''' </summary>
        Public Property ScanMode As ScanMode = ScanMode.Rect
        Dim xArray() As Integer = {-1, 0, 1, 1, 1, 0, -1, -1}
        Dim yArray() As Integer = {-1, -1, -1, 0, 1, 1, 1, 0}
        Dim NewStart As Boolean
        ''' <summary>
        ''' 创建并初始化一个可自动生成绘制序列AI的实例
        ''' </summary>
        Public Sub New(BolArr(,) As Integer)
            Sequences = New List(Of PointSequence)
            CalculateSequence(BolArr)
            For Each SubItem In Sequences
                SubItem.CalcSize()
            Next
        End Sub
        ''' <summary>
        ''' 新增一个序列
        ''' </summary>
        Private Sub CreateNewSequence()
            Sequences.Add(New PointSequence)
        End Sub
        ''' <summary>
        ''' 在序列List末尾项新增一个点
        ''' </summary>
        Private Sub AddPoint(point As Vector2)
            Sequences.Last.Points.Add(point)
        End Sub
        ''' <summary>
        ''' 计算序列
        ''' </summary>
        Private Sub CalculateSequence(BolArr(,) As Integer)
            If ScanMode = ScanMode.Rect Then
                ScanRect(BolArr)
            Else
                ScanCircle(BolArr)
            End If
        End Sub
        ''' <summary>
        ''' 圆形扫描
        ''' </summary>
        ''' <param name="BolArr"></param>
        Private Sub ScanCircle(BolArr(,) As Integer)
            Dim xCount As Integer = BolArr.GetUpperBound(0)
            Dim yCount As Integer = BolArr.GetUpperBound(1)
            Dim CP As New Point(xCount / 2, yCount / 2)
            Dim R As Integer = 0
            For R = 0 To If(xCount > yCount, xCount, yCount)
                For Theat = 0 To Math.PI * 2 Step 1 / R
                    Dim dx As Integer = CInt(CP.X + R * Math.Cos(Theat))
                    Dim dy As Integer = CInt(CP.Y + R * Math.Sin(Theat))
                    If Not (dx > 0 And dy > 0 And dx < xCount And dy < yCount) Then Continue For
                    If BolArr(dx, dy) = 1 Then
                        BolArr(dx, dy) = 0
                        Me.CreateNewSequence()
                        Me.AddPoint(New Vector2(dx, dy))
                        CheckMove(BolArr, dx, dy, 0)
                        NewStart = True
                    End If
                Next
            Next
        End Sub
        ''' <summary>
        ''' 矩形扫描
        ''' </summary>
        ''' <param name="BolArr"></param>
        Private Sub ScanRect(BolArr(,) As Integer)
            Dim xCount As Integer = BolArr.GetUpperBound(0)
            Dim yCount As Integer = BolArr.GetUpperBound(1)
            For i = 0 To xCount - 1
                For j = 0 To yCount - 1
                    Dim dx As Integer = i
                    Dim dy As Integer = j
                    If Not (dx > 0 And dy > 0 And dx < xCount And dy < yCount) Then Continue For
                    If BolArr(dx, dy) = 1 Then
                        BolArr(dx, dy) = 0
                        Me.CreateNewSequence()
                        Me.AddPoint(New Vector2(dx, dy))
                        CheckMove(BolArr, dx, dy, 0)
                        NewStart = True
                    End If
                Next
            Next
        End Sub
        ''' <summary>
        ''' 递归循迹算法
        ''' </summary>
        Private Sub CheckMove(ByRef bolArr(,) As Integer, ByVal x As Integer, ByVal y As Integer, ByVal StepNum As Integer)
            If StepNum > 1000 Then Return
            Dim xBound As Integer = bolArr.GetUpperBound(0)
            Dim yBound As Integer = bolArr.GetUpperBound(1)
            Dim dx, dy As Integer
            Dim AroundValue As Integer = GetAroundValue(bolArr, x, y)
            '根据点权值轨迹将在当前点断开
            'If AroundValue > 2 AndAlso AroundValue < 8 Then
            'Return
            'End If
            For i = 0 To 7
                dx = x + xArray(i)
                dy = y + yArray(i)
                If Not (dx > 0 And dy > 0 And dx < xBound And dy < yBound) Then
                    Return
                ElseIf bolArr(dx, dy) = 1 Then
                    bolArr(dx, dy) = 0
                    If NewStart = True Then
                        Me.CreateNewSequence()
                        Me.AddPoint(New Vector2(dx, dy))
                        NewStart = False
                    Else
                        Me.AddPoint(New Vector2(dx, dy))
                    End If
                    CheckMove(bolArr, dx, dy, StepNum + 1)
                    NewStart = True
                End If
            Next
        End Sub
        ''' <summary>
        ''' 返回点权值
        ''' </summary>
        Private Function GetAroundValue(ByRef BolArr(,) As Integer, ByVal x As Integer, ByVal y As Integer) As Integer
            Dim dx, dy, ResultValue As Integer
            Dim xBound As Integer = BolArr.GetUpperBound(0)
            Dim yBound As Integer = BolArr.GetUpperBound(1)
            For i = 0 To 7
                dx = x + xArray(i)
                dy = y + yArray(i)
                If dx > 0 And dy > 0 And dx < xBound And dy < yBound Then
                    If BolArr(dx, dy) = 1 Then
                        ResultValue += 1
                    End If
                End If
            Next
            Return ResultValue
        End Function
    End Class
    
    ''' <summary>
    ''' 线条扫描方式
    ''' </summary>
    Public Enum ScanMode
        ''' <summary>
        ''' 矩形扫描
        ''' </summary>
        Rect
        ''' <summary>
        ''' 圆形扫描
        ''' </summary>
        Circle
    End Enum
    VB.NET-SequenceAI
    Imports System.Numerics
    ''' <summary>
    ''' 表示由一系列点向量组成的线条
    ''' </summary>
    Public Class PointSequence
        Public Property Points As New List(Of Vector2)
        Public Property Sizes As Single()
        ''' <summary>
        ''' 计算画笔大小
        ''' </summary>
        Public Sub CalcSize()
            If Points.Count < 1 Then Exit Sub
            Static Mid, PenSize As Single
            ReDim Sizes(Points.Count - 1)
            For i = 0 To Points.Count - 1
                Mid = CSng(Math.Abs(i - Points.Count / 2))
                PenSize = 1 - Mid / Points.Count * 2
                Sizes(i) = PenSize
            Next
        End Sub
    End Class
    VB.NET-PointSequence
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data;
    using System.Diagnostics;
    using System.Numerics;
    /// <summary>
    /// 表示自动循迹并生成绘制序列的AI
    /// </summary>
    public class SequenceAI
    {
        /// <summary>
        /// 线条序列List
        /// </summary>
        /// <returns></returns>
        public List<PointSequence> Sequences { get; set; }
        /// <summary>
        /// 扫描方式
        /// </summary>
        public ScanMode ScanMode { get; set; }
        int[] xArray = {
            -1,
            0,
            1,
            1,
            1,
            0,
            -1,
            -1
        };
        int[] yArray = {
            -1,
            -1,
            -1,
            0,
            1,
            1,
            1,
            0
        };
        bool NewStart;
        /// <summary>
        /// 创建并初始化一个可自动生成绘制序列AI的实例
        /// </summary>
        public SequenceAI(int[,] BolArr)
        {
            Sequences = new List<PointSequence>();
            CalculateSequence(BolArr);
            foreach (object SubItem_loopVariable in Sequences) {
                SubItem = SubItem_loopVariable;
                SubItem.CalcSize();
            }
        }
        /// <summary>
        /// 新增一个序列
        /// </summary>
        private void CreateNewSequence()
        {
            Sequences.Add(new PointSequence());
        }
        /// <summary>
        /// 在序列List末尾项新增一个点
        /// </summary>
        private void AddPoint(Vector2 point)
        {
            Sequences.Last.Points.Add(point);
        }
        /// <summary>
        /// 计算序列
        /// </summary>
        private void CalculateSequence(int[,] BolArr)
        {
            if (ScanMode == ScanMode.Rect) {
                ScanRect(BolArr);
            } else {
                ScanCircle(BolArr);
            }
        }
        /// <summary>
        /// 圆形扫描
        /// </summary>
        /// <param name="BolArr"></param>
        private void ScanCircle(int[,] BolArr)
        {
            int xCount = BolArr.GetUpperBound(0);
            int yCount = BolArr.GetUpperBound(1);
            Point CP = new Point(xCount / 2, yCount / 2);
            int R = 0;
            for (R = 0; R <= xCount > yCount ? xCount : yCount; R++) {
                for (Theat = 0; Theat <= Math.PI * 2; Theat += 1 / R) {
                    int dx = Convert.ToInt32(CP.X + R * Math.Cos(Theat));
                    int dy = Convert.ToInt32(CP.Y + R * Math.Sin(Theat));
                    if (!(dx > 0 & dy > 0 & dx < xCount & dy < yCount))
                        continue;
                    if (BolArr[dx, dy] == 1) {
                        BolArr[dx, dy] = 0;
                        this.CreateNewSequence();
                        this.AddPoint(new Vector2(dx, dy));
                        CheckMove(ref BolArr, dx, dy, 0);
                        NewStart = true;
                    }
                }
            }
        }
        /// <summary>
        /// 矩形扫描
        /// </summary>
        /// <param name="BolArr"></param>
        private void ScanRect(int[,] BolArr)
        {
            int xCount = BolArr.GetUpperBound(0);
            int yCount = BolArr.GetUpperBound(1);
            for (i = 0; i <= xCount - 1; i++) {
                for (j = 0; j <= yCount - 1; j++) {
                    int dx = i;
                    int dy = j;
                    if (!(dx > 0 & dy > 0 & dx < xCount & dy < yCount))
                        continue;
                    if (BolArr[dx, dy] == 1) {
                        BolArr[dx, dy] = 0;
                        this.CreateNewSequence();
                        this.AddPoint(new Vector2(dx, dy));
                        CheckMove(ref BolArr, dx, dy, 0);
                        NewStart = true;
                    }
                }
            }
        }
        /// <summary>
        /// 递归循迹算法
        /// </summary>
        private void CheckMove(ref int[,] bolArr, int x, int y, int StepNum)
        {
            if (StepNum > 1000)
                return;
            int xBound = bolArr.GetUpperBound(0);
            int yBound = bolArr.GetUpperBound(1);
            int dx = 0;
            int dy = 0;
            int AroundValue = GetAroundValue(ref bolArr, x, y);
            //根据点权值轨迹将在当前点断开
            //If AroundValue > 2 AndAlso AroundValue < 8 Then
            //Return
            //End If
            for (i = 0; i <= 7; i++) {
                dx = x + xArray[i];
                dy = y + yArray[i];
                if (!(dx > 0 & dy > 0 & dx < xBound & dy < yBound)) {
                    return;
                } else if (bolArr[dx, dy] == 1) {
                    bolArr[dx, dy] = 0;
                    if (NewStart == true) {
                        this.CreateNewSequence();
                        this.AddPoint(new Vector2(dx, dy));
                        NewStart = false;
                    } else {
                        this.AddPoint(new Vector2(dx, dy));
                    }
                    CheckMove(ref bolArr, dx, dy, StepNum + 1);
                    NewStart = true;
                }
            }
        }
        /// <summary>
        /// 返回点权值
        /// </summary>
        private int GetAroundValue(ref int[,] BolArr, int x, int y)
        {
            int dx = 0;
            int dy = 0;
            int ResultValue = 0;
            int xBound = BolArr.GetUpperBound(0);
            int yBound = BolArr.GetUpperBound(1);
            for (i = 0; i <= 7; i++) {
                dx = x + xArray[i];
                dy = y + yArray[i];
                if (dx > 0 & dy > 0 & dx < xBound & dy < yBound) {
                    if (BolArr[dx, dy] == 1) {
                        ResultValue += 1;
                    }
                }
            }
            return ResultValue;
        }
    }
    
    /// <summary>
    /// 线条扫描方式
    /// </summary>
    public enum ScanMode
    {
        /// <summary>
        /// 矩形扫描
        /// </summary>
        Rect,
        /// <summary>
        /// 圆形扫描
        /// </summary>
        Circle
    }
    C#-SequenceAI
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data;
    using System.Diagnostics;
    using System.Numerics;
    /// <summary>
    /// 表示由一系列点向量组成的线条
    /// </summary>
    public class PointSequence
    {
        public List<Vector2> Points { get; set; }
        public float[] Sizes { get; set; }
        float static_CalcSize_Mid;
        /// <summary>
        /// 计算画笔大小
        /// </summary>
        float static_CalcSize_PenSize;
        public void CalcSize()
        {
            if (Points.Count < 1)
                return;
            Sizes = new float[Points.Count];
            for (i = 0; i <= Points.Count - 1; i++) {
                static_CalcSize_Mid = Convert.ToSingle(Math.Abs(i - Points.Count / 2));
                static_CalcSize_PenSize = 1 - static_CalcSize_Mid / Points.Count * 2;
                Sizes[i] = static_CalcSize_PenSize;
            }
        }
    }
    C#-PointSequence

    视频

      演示视频:黑白线条画 (Bilibili)

      演示视频:古典人物画 (Bilibili)

    附录

      GitHub:EDGameEngine.AutoDraw

      早期博客:程序如何实现自动绘图 

      早期博客:更优秀的自动绘图程序

      创意分享:儿童涂鸦遇上程序绘图 

    转载于:https://www.cnblogs.com/experdot/p/5779593.html

    展开全文
  • 在工作中,可能会遇到各种绘图应用程序(例如MS Paint)...无需依赖本机代码和库,Aspose.Drawing for .NET允许绘制各种图形对象,例如直线,圆弧,矩形,多边形,椭圆形等,以及使用钢笔和画笔使用C#或VB.NET创建2D图

    在工作中,可能会遇到各种绘图应用程序(例如MS Paint),它们允许绘制图形并生成图像。但是,如果要创建自己的绘图实用程序或在Web或桌面应用程序中集成绘图功能该怎么办?

    对于此类情况,Aspose提供了.NET图形API作为.NET的Aspose.Drawing,这是用于创建与GDI +相同的图像和绘图的轻量级解决方案。

    无需依赖本机代码和库,Aspose.Drawing for .NET允许绘制各种图形对象,例如直线,圆弧,矩形,多边形,椭圆形等,以及使用钢笔和画笔使用C#或VB.NET创建2D图形创建2D图形。(点击下载

    总体特性

    Aspose.Drawing for .NET的概述

    支持的文件格式

    Aspose.Drawing for .NET支持以下图像格式

    平台独立性

    Aspose.Drawing for .NET支持任何从2.0开始的.NET框架

    Aspose.Drawing API的高级功能

    • 从头开始创建位图或加载现有文件
    • 处理和绘制图形路径
    • 使用实体和纹理笔刷
    • 使用仿射变换
    • 绘制直线,曲线,样条曲线和圆弧
    • 渲染具有不同字体和样式的文本
    • 支持Alpha混合和抗锯齿线条和形状
    • 绘制矩形,多边形,月食等形状
    • 使用不同的笔宽度和样式
    • 处理片段区域

    使用C#从头开始创建图像

    以下是使用Aspose.Drawing for .NET创建图像的步骤。

    • 创建一个Bitmap类的实例。
    • 创建Graphics类的实例,并使用Bitmap的实例对其进行初始化。
    • 定义一个新的Pen对象并设置其属性。
    • 使用Graphics.DrawArc(Pen,Single,Single,Single,Single,Single,Single)方法绘制圆弧。
    • 使用Graphics.DrawEllipse(Pen,Single,Single,Single,Single)方法绘制椭圆。
    • 使用Bitmap.Save(string)方法将图形保存为所需的图像格式。

    下面的代码示例演示如何使用C#从头开始创建图像。

    // Create Bitmap object
    Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
    // Create and initialize Graphics
    Graphics graphics = Graphics.FromImage(bitmap);            
    // Create Pen
    Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
    // Draw arc
    graphics.DrawArc(pen, 0, 0, 700, 700, 0, 180);
    // Create another Pen
    Pen pen1 = new Pen(Color.FromKnownColor(KnownColor.Red), 2);
    // Draw ellipse
    graphics.DrawEllipse(pen1, 10, 10, 900, 700);
    // Save the drawing into desired image format
    bitmap.Save(@"drawing.png");

    使用C#在现有图像上绘制图形

    以下是执行此操作的步骤。

    • 创建Bitmap类的实例,并使用图像的路径对其进行初始化。
    • 以与上一个示例相同的方式绘制所需的图形,例如线,多边形等。
    • 使用Bitmap.Save(string)方法保存更新的图像。

    下面的代码示例演示如何使用C#在现有图像上绘制图形。

    // Initialize Bitmap with the input image
    Bitmap bitmap = new Bitmap("input.png");
    // Initialize graphics
    Graphics graphics = Graphics.FromImage(bitmap);
    // Create a Pen
    Pen pen = new Pen(Color.FromKnownColor(KnownColor.Orange), 4);
    // Draw polygon
    graphics.DrawPolygon(pen, new Point[] { new Point(100, 100), new Point(500, 400), new Point(900, 100) });
    // Save the drawing into desired image format
    bitmap.Save(@"drawing_updated.png");

    输出结果

    轻松绘制图像图形!GDI +图形处理API-Aspose.Drawing重磅上市!

     

    展开全文
  • 今天要分享的是一个关于数学家笛卡尔的爱情故事,在笛卡尔与公主的最后一封信中,留下了这个方程:r=a(1-sinθ),聪明的公主把方程解了出来,并图形,著名的“心形线“便产生了。我们在此基础上更上一层楼,把...
  • 我是Python和pyqtgraph的新手。我正在研究一种不同类型信号的查看器...我试图调整pyqtgraph示例十字线/鼠标交互,但除了pyqtgraph中的许多其他内容外,我不理解mousemoved()之前的vb=signalgraph.vb的含义,并且脚本...
  • vb控件开发 开发ocx

    热门讨论 2011-02-28 16:12:16
    如何解决VB中的Grid控件的打印问题 54 , 54.txt 如何强制文件对话框再次读取正确的磁盘 55 , 55.txt 如何取得RichTextBox控件中光标所在行的值? 56 , 56.txt 如何让用户自行输入方程式,并计算其结果? 57 , 57.txt...
  • 利用VB的图片框实现屏幕的滚动

    千次阅读 2014-02-12 15:58:42
    对于学习使用VB来编程的电脑爱好者来说,可能会遇到这样一个问题:就是如何实现屏幕的滚动,因为当要显示的内容超出了屏幕的大小后,利用VB所提供的垂直滚动条和水平滚动条等控件是不可能直接实现这一特殊显示功能的...
  • VB开发经验技巧宝典

    2012-01-29 14:26:04
    第15章 图形图像技术 第16章 动画与多媒体 第17章 API函数 第18章 注册表 第19章 Windows 应用 第20章 应用程序控制 第21章 数据库技术 第22章 SQL查询相关技术 第23章 打印与...
  • 微软 VB2010 源码包

    2013-05-22 02:21:18
    Excel:演示如何使用 Visual Basic 启动 Excel、从模板创建工作簿、更新工作表中的单元格、在工作簿中填充图形以及执行其他任务 Game:演示 My 功能、面向对象编程和绘图。 Logging:使用 My.Application.Log 对象...
  • VB编程资源大全

    2007-10-17 20:47:23
    (12KB) 10,n256vbcol.ZIP 在vb的picturebox控制中使用256色图形的例子(26KB) 11,appbar5.ZIP 在你的windows里加一个象任务条一样,会自动隐藏的工具条(4KB) 12,browsdlg.ZIP 查看目录的例子...
  • 我是Python和pyqtgraph的新手。 我正在为各种信号的查看器工作。...我试图改编pyqtgraph示例的十字线/鼠标交互,但是除了pyqtgraph中的许多其他事情之外,我在mousemoved()之前不了解vb = signalgraph.vb的含...
  • xeditor.zip 一个利用VB编写的功能比较完备的文本编辑器(172KB) 31,custominputbox.zip 这个程序演示如何改变缺省的InputBox的外貌(10KB) 32,controlpopmenu.zip 这个程序演示如何控制控件的缺省...
  • 电子书-vb.net程序设计教程

    热门讨论 2011-09-21 15:58:44
    如何使用Visual Basic .NET进行图形设计;第9章介绍Visual Basic .NET在图像处理方面的 技术及应用实例;第10 章介绍数据库应用;第11 章是应用程序设计实践,介绍包括文本编 辑器、管理统计图、动画设计及小型图案...
  • 丁香姐姐:不是每个人都能成为比尔盖茨,但你想知道天天使用的Windows的诸多功能是如何实现的吗?你想要编写自己的应用程序吗?那么,请跟我来吧,进入我们的VB神童教程之旅…… 课程安排 我们以最为普及的 VB...
  • 这个程序演示如何建立刷句柄以及将它选择到一个图形设备句柄中(3KB) 10,cleardoc.ZIP 清除"文档"菜单中的快捷方式和加入快捷方式(2KB) 11,BMenu.ZIP 建立位图菜单(3KB) 12,Format.ZIP 磁盘格式化演示程序(2KB...
  • 第2~6篇为VB 2008专题应用程序开发实例,通过19个专题领域实例,详细深入地介绍了VB 2008各种领域的应用开发技术和技巧,具体包括:数据库应用开发实例、网络与通信开发实例、多媒体应用开发实例、图形图像处理实例...
  • 利用了API可读注册表中所有的项目(4KB) 65,wpchanger.zip Windows墙纸更改事例 (3KB) 66,vbtozip.zip 用VB压缩文件(最简单的方法)(2KB) 67,anicursor.zip 演示如何使用动画光标 VB源码(7KB)...
  • mid 窗口实现的编辑器,并能防止打开多个实例(32KB) 37,f020.ZIP 在VB中调用HELP文件并实现Winhelp的关键字、主题等功能(16KB) 38,f019.ZIP 如何VB中分割一个文件并组装恢复它(18KB) 39,f018.ZIP...
  • 只需要按设计要求的屏幕布局,用系统提供的工具,在屏幕上出各种“部件”,即图形对象,并设置这些图形对象的属性。Visual Basic自动产生界面设计代码,程序设计人员只需要编写实现程序功能的那部分代码,从而可以...
  • 一般学习编程的书很少有对如何设计程序的图形界面进行专门介绍,因此学习后,很多用户对于程序界面设计还不能很好的掌握。而学习程序界面设计有的编程爱好者是通过学习图像制作软件而得来的,如Photoshop,但还不够...
  • 本书通过大量实例,介绍了如何在Visual Basic程序设计中使用 Win32 API函数,内容包括:API函数的声明和参数传送、资源文件、窗口、Windows消息控制、设备环境(DC)、GDI对象、光标、位图与光栅运算、字体与文本、...
  • C#运用WPF实现游戏动画制作

    热门讨论 2011-12-14 15:59:46
    一、WPF开发的是桌面应用程序,自包括Vista在内以后的Windows系列操作系统均大量以之为主流图形工具,即将全面取代Winform,并且Windows 7将集成.NET3.5+框架,在当今Windows系列操作系统占据90%同类市场的现状下,...
  • 用Java 开发C/S结构的系统,面临着许多问题,如:程序的启动点 、如何画图形界面、客户端的事件是如何触发的、客户端如何与服务器端交互的等等。在查找了相关资料与咨询了曾经开发过Java C/S程序的朋友,才有所领悟...
  • 强大开发环境,并深入研究了VB语言本身以及如何使用它完成一些重要的开发任务。  本版中的新示例以及广泛修订并重新测试的代码可帮助读者深入了解VB 2008。大量附录可帮助读者将所熟悉的语言转换为相应的VB 语法。...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

vb如何画图形