欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用C#實(shí)現(xiàn)一個(gè)簡(jiǎn)單的繪圖工具

 更新時(shí)間:2024年02月01日 10:57:09   作者:lingxiao16888  
這篇文章主要為大家詳細(xì)介紹了如何使用C#開發(fā)的簡(jiǎn)單繪圖工具,可以將簽名簡(jiǎn)單繪圖后的效果以圖片的形式導(dǎo)出,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1.目的

使用C#開發(fā)的簡(jiǎn)單繪圖工具,將簽名,簡(jiǎn)單繪圖后的效果以圖片的形式導(dǎo)出。

2.相關(guān)技術(shù)

GDI.....實(shí)在沒啥

3.效果展示

無背景狀態(tài):

導(dǎo)出的圖片效果:

添加背景后:

導(dǎo)出的圖片效果:

4.代碼

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            g = this.CreateGraphics();
        }
        Graphics g;
        Graphics imgGraphice;
        Color curColor = Color.Black;
        string title;
        Image backImg;
        DrawingMode curDrawingTool = DrawingMode.None;
        int penSize = 0;
        bool drawingFlag = false;
        TextBox tb;
        private void Form1_Load(object sender, EventArgs e)
        {
            title = this.Text;
            toolStripComboBox1.SelectedIndex = 0;
        }
 
        private void opentoolStrip_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog ofd = new OpenFileDialog())
            {
                ofd.Filter = "jpg圖片|*.jpg";
                ofd.Multiselect = false;
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    Image sourceImage = Image.FromFile(ofd.FileName);                   
                    backImg = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);
                    imgGraphice = Graphics.FromImage(backImg);
                    RectangleF rec = new RectangleF(0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height);
                    imgGraphice.DrawImage(sourceImage,rec  , new RectangleF(0, 0, sourceImage.Width, sourceImage.Height), GraphicsUnit.Pixel);
                   
                     g.Clear(Color.White);                  
                    g.DrawImage(sourceImage,this.ClientRectangle);
                    this.Text = title + "\t" + ofd.FileName;
                }
 
            }
        }
 
        private void newtoolStrip_Click(object sender, EventArgs e)
        {
            //自定義圖片
            backImg = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);
            imgGraphice = Graphics.FromImage(backImg);
            imgGraphice.Clear(Color.White);
            g.DrawImage(backImg, this.ClientRectangle);
            this.Text = title + "\t未命名";
        }
 
        private void savetoolStrip_Click(object sender, EventArgs e)
        {
            if (backImg == null) return;
            using (SaveFileDialog sfd = new SaveFileDialog())
            {
                sfd.Filter = "圖像文件|*.jpg";
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    backImg.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                    MessageBox.Show("保存至:" + sfd.FileName, "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
 
        private void exittoolStrip_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void colortoolStrip_Click(object sender, EventArgs e)
        {
            using (ColorDialog cd = new ColorDialog())
            {
                if (cd.ShowDialog() == DialogResult.OK)
                {
                    curColor = cd.Color;
                }
            }
        }
 
        private void btnPen_Click(object sender, EventArgs e)
        {
            curDrawingTool = DrawingMode.Pen;
        }
 
        private void btnLine_Click(object sender, EventArgs e)
        {
            curDrawingTool = DrawingMode.Line;
        }
 
        private void btnRec_Click(object sender, EventArgs e)
        {
            curDrawingTool = DrawingMode.Rectangle;
        }
 
        private void btnEllipse_Click(object sender, EventArgs e)
        {
            curDrawingTool = DrawingMode.Ellipse;
        }
 
        private void btnText_Click(object sender, EventArgs e)
        {
            curDrawingTool = DrawingMode.Text;
        }
 
        private void btnRubber_Click(object sender, EventArgs e)
        {
            curDrawingTool = DrawingMode.Rubber;
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            //進(jìn)行重繪不然窗口最小化后就沒有
            if (backImg != null)
                g.DrawImage(backImg, this.ClientRectangle);
        }
        Point oldPoint;
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                oldPoint = e.Location;
                drawingFlag = true;
            }
            switch (curDrawingTool)
            {
                case DrawingMode.None:
                    break;
                case DrawingMode.Pen:
                    break;
                case DrawingMode.Line:
                    break;
                case DrawingMode.Rectangle:
                    break;
                case DrawingMode.Ellipse:
                    break;
                case DrawingMode.Text:
                    if (imgGraphice == null)
                        return;
                    //在當(dāng)前位置添加
                    tb = new TextBox();
                    tb.Width = 100;
                    tb.Height = 30;
                    tb.BackColor = Color.FromArgb(192, 255, 192);
                    tb.BorderStyle = BorderStyle.Fixed3D;
                    tb.Location = e.Location;
                    tb.KeyDown += Tb_KeyDown;
                    this.Controls.Add(tb);
 
                    break;
                case DrawingMode.Rubber:
                    break;
                default:
                    break;
            }
        }
 
        private void Tb_KeyDown(object sender, KeyEventArgs e)
        {
            if (imgGraphice == null)
                return;
            if (e.KeyValue == 13)
            {
                g.DrawString(tb.Text, new Font("宋體", 12), new SolidBrush(curColor), oldPoint);
                imgGraphice.DrawString(tb.Text, new Font("宋體", 12), new SolidBrush(curColor), oldPoint);
                this.Controls.Remove(tb);
            }
            
        }
 
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            labCoord.Text =  e.Location.ToString();
            if (imgGraphice == null || drawingFlag == false) return;
            switch (curDrawingTool)
            {
                case DrawingMode.None:
                    break;
                case DrawingMode.Pen:
                    
                    g.DrawLine(new Pen(curColor, penSize), oldPoint, e.Location);
                    imgGraphice.DrawLine(new Pen(curColor, penSize), oldPoint, e.Location);
                    oldPoint = e.Location;
                    break;
                case DrawingMode.Line:
                    //為表現(xiàn)出實(shí)時(shí)效果需要擦寫痕跡效果(即在form上進(jìn)行繪制只是表象,一切以在image上繪制為準(zhǔn))
                    Form1_Paint(null, null);
                    g.DrawLine(new Pen(curColor, penSize), oldPoint, e.Location);
                    break;
                case DrawingMode.Rectangle:
                    Form1_Paint(null, null);
                    g.DrawRectangle(new Pen(curColor, penSize),oldPoint.X,oldPoint.Y,e.X-oldPoint.X,e.Y-oldPoint.Y);
                    break;
                case DrawingMode.Ellipse:
                    Form1_Paint(null, null);
                    g.DrawEllipse(new Pen(curColor, penSize), oldPoint.X, oldPoint.Y, e.X - oldPoint.X, e.Y - oldPoint.Y);
                    break;
                case DrawingMode.Text:
                    break;
                case DrawingMode.Rubber:
 
                    //所謂橡皮擦就是繪制白線
                    g.DrawLine(new Pen(Color.White, penSize), oldPoint, e.Location);
                    imgGraphice.DrawLine(new Pen(Color.White, penSize), oldPoint, e.Location);
                    oldPoint = e.Location;
                    break;
                default:
                    break;
            }
        }
 
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            drawingFlag = false;
            if (imgGraphice == null) return;
            switch (curDrawingTool)
            {
                case DrawingMode.None:
                    break;
                case DrawingMode.Pen:
                    break;
                case DrawingMode.Line:
                    //這里繪制Line的最終效果
                    imgGraphice.DrawLine(new Pen(curColor, penSize), oldPoint, e.Location);
                    break;
                case DrawingMode.Rectangle:
                   imgGraphice.DrawRectangle(new Pen(curColor, penSize), oldPoint.X, oldPoint.Y, e.X - oldPoint.X, e.Y - oldPoint.Y);
                    break;
                case DrawingMode.Ellipse:
                    imgGraphice.DrawEllipse(new Pen(curColor, penSize), oldPoint.X, oldPoint.Y, e.X - oldPoint.X, e.Y - oldPoint.Y);
                    break;
                case DrawingMode.Text:
                    break;
                case DrawingMode.Rubber:
                    break;
                default:
                    break;
            }
        }
 
        private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int size;
            if (int.TryParse(toolStripComboBox1.Text, out size))
            {
                penSize = size;
            }
 
        }
    }
    enum DrawingMode
    {
        None,
        Pen,
        Line,
        Rectangle,
        Ellipse,
        Text,
        Rubber
    }

到此這篇關(guān)于使用C#實(shí)現(xiàn)一個(gè)簡(jiǎn)單的繪圖工具的文章就介紹到這了,更多相關(guān)C#繪圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論