گرافیک در سی شارپ

saalek110

Well-Known Member
کد:
            System.Drawing.Graphics my_graph = this.CreateGraphics();
            Pen my_pen = new Pen(Color.Navy);
            my_pen.Width = 7;
            my_pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot;
            my_graph.DrawEllipse(my_pen, 70, 30, 150, 100);
            my_graph.Dispose();



c6.gif


در اینجا صفت dash قلم را تنظیم کرده ایم و ضخامت قلم را.
 

saalek110

Well-Known Member
کد:
            string my_string="hello__abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz1234";
            System.Drawing.Graphics my_graph = this.CreateGraphics();
            Brush my_brush = Brushes.Black;
            Rectangle my_rec = new Rectangle(450, 100, 40, 150); // khalghe rec


            my_graph.DrawRectangle(System.Drawing.Pens.Blue, my_rec);   // rasme rec

            my_graph.DrawString(my_string, this.Font, my_brush, my_rec);
[COLOR="Red"]
            my_graph.RotateTransform(12);
[/COLOR]
            my_graph.DrawRectangle(System.Drawing.Pens.Blue, my_rec);   // rasme rec
            my_graph.DrawString(my_string, this.Font, my_brush, my_rec);
[COLOR="#ff0000"]
            my_graph.RotateTransform(-12);
            my_graph.ScaleTransform(1.5f, 1.5f);
[/COLOR]
            my_graph.DrawRectangle(System.Drawing.Pens.Blue, my_rec);   // rasme rec
            my_graph.DrawString(my_string, this.Font, my_brush, my_rec);
[COLOR="#ff0000"]
            my_graph.RotateTransform(12);
[/COLOR]
            my_graph.DrawRectangle(System.Drawing.Pens.Blue, my_rec);   // rasme rec
            my_graph.DrawString(my_string, this.Font, my_brush, my_rec);
            my_graph.Dispose();



c7.gif


این کد:

کد:
my_graph.ResetTransform();
هم برای ریست کردن تغییرات انجام شده روی گراف خود.
 
آخرین ویرایش:

saalek110

Well-Known Member
برنامه زیر در رویداد فرم paint تست شده.

و using مورد نیاز:
کد:
using System.Drawing.Drawing2D;

کد:
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen pn = new Pen(Color.Red, 3);
            HatchBrush htchBrush = new HatchBrush(HatchStyle.Cross,
                Color.Red, Color.Blue);
            g.DrawRectangle(pn, 20, 20, 200, 200);
            g.FillRectangle(htchBrush, 20, 20, 200, 200);
        }

نکته آن استفاده از e است که من قبلا استفاده نکرده بودم. این برنامه از یکسری سورس انتخاب شده.
بعد یک قلم و یک براش تعریف شده . با قلم مستطیل رسم شده و با براش پر شده.


b1.gif

 
آخرین ویرایش:

saalek110

Well-Known Member
در برنامه زیر یک تابع اورراید شده داریم.

و using مورد نیاز:
کد:
using System.Drawing.Drawing2D;

تابع را بعد از (سی شارپ 2005 ):

کد:
        public Form1()
        {
            InitializeComponent();
        }

قرار دهید.

کد:
        protected override void OnPaint(PaintEventArgs e)
        {
            // Obtain the Graphics object
            Graphics g = e.Graphics;
            // Set the composit quality and smooting mode
            // of the surface
            g.CompositingQuality = CompositingQuality.HighQuality;
            g.SmoothingMode = SmoothingMode.AntiAlias;
            // Create a rectangle from point (20, 20) to (100, 100)
            Rectangle rect = new Rectangle(20, 20, 100, 100);
            // Create two Pen objects with Red and Green color
            Pen redPen = new Pen(Color.Red, 3);
            Pen blackPen = Pens.Black;
            // Create a SolidBrush objects 
            SolidBrush greenBrush = new SolidBrush(Color.Green);
            // Draw shapes and lines
            g.DrawRectangle(redPen, rect);
            g.FillEllipse(greenBrush, rect);
            g.DrawLine(blackPen, 0, 250, this.Width, 250);
            g.FillEllipse(Brushes.Blue, 70, 220, 30, 30);
            g.FillEllipse(Brushes.SkyBlue, 100, 210, 40, 40);
            g.FillEllipse(Brushes.Green, 140, 200, 50, 50);
            g.FillEllipse(Brushes.Yellow, 190, 190, 60, 60);
            g.FillEllipse(Brushes.Violet, 250, 180, 70, 70);
            g.FillEllipse(Brushes.Red, 320, 170, 80, 80);
            // Dispose objects
            greenBrush.Dispose();
            // blackPen.Dispose();
            redPen.Dispose();
            g.Dispose();
        }


b2.gif


بدون این دو خط از برنامه :
کد:
            g.CompositingQuality = CompositingQuality.HighQuality;
            g.SmoothingMode = SmoothingMode.AntiAlias;

کیفیت پایینی خواهیم داشت:

b3.gif
 
آخرین ویرایش:

saalek110

Well-Known Member
hatch22.PNG

از :
http://www.java2s.com/Code/CSharp/2D-Graphics/HatchBrushDemo.htm

کد:
using System.Drawing.Drawing2D;

کد:
        protected override void OnPaint(PaintEventArgs e)
        {
            HatchBrush h = new HatchBrush(HatchStyle.BackwardDiagonal,
                                          Color.Black,
                                          Color.Cyan);
            Pen P = new Pen(h, 20);

            e.Graphics.Clear(Color.AliceBlue);
            e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

            e.Graphics.DrawLine(P, 80, 90, 80, 200);
            e.Graphics.FillEllipse(h, 50, 50, 50, 30);
        }
 

saalek110

Well-Known Member
از :
http://demo.q139.cn/Code/CSharp/2D-Graphics/HatchBrushStyles.htm


HatchBrushStyles.PNG

کد:
using System.Drawing.Drawing2D;

کد:
        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Font f = new Font(new FontFamily("Times New Roman"), 10);
            Brush fb = new SolidBrush(Color.Black);
            Color cb = Color.Red, cf = Color.White;

            int wi = 30, hi = 25, rectNb = 14;
            int x, y;
            HatchBrush hb = null;
            for (int i = 0; i < 53; i++)
            {
                x = (int)(i % rectNb);
                y = (int)(i / rectNb);
                hb = new HatchBrush((HatchStyle)i, cf, cb);
                g.FillRectangle(hb, 2 + x * (5 + wi), 2 + y * (5 + hi), wi, hi);
            }

            fb.Dispose(); hb.Dispose(); g.Dispose();
        }
 

saalek110

Well-Known Member
منبع:
http://www.csharphelp.com/archives4/archive695.html

موضوع : تغییر شکل دادن فرم

کد:
using System.Drawing.Drawing2D;

کد:
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            GraphicsPath gp = new GraphicsPath();
            Graphics gr = this.CreateGraphics();
            Region r;
            RectangleF rf;
            PointF[] p = new PointF[9];
            Font f;
            p[0] = new PointF(70, 0);
            p[1] = new PointF(170, 0);
            p[2] = new PointF(240, 70);
            p[3] = new PointF(240, 170);
            p[4] = new PointF(170, 240);
            p[5] = new PointF(70, 240);
            p[6] = new PointF(0, 170);
            p[7] = new PointF(0, 70);
            p[8] = new PointF(70, 0);
            gp.AddPolygon(p);
            PathGradientBrush pgb = new PathGradientBrush(p);
            Color[] c = new Color[2];
            c[0] = Color.Honeydew;
            c[1] = Color.SeaShell;
            pgb.CenterColor = Color.Chocolate;
            pgb.SurroundColors = c;
            gr.FillPolygon(pgb, p);
            r = new Region(gp);
            this.Region = r;
            gr = this.CreateGraphics();
            gr.DrawPolygon(new Pen(Color.White, 5), p);
            gr.DrawPolygon(new Pen(Color.Black, 3), p);
            rf = new RectangleF(15, 105, 240, 115);
            f = new Font(FontFamily.GenericMonospace, 13, FontStyle.Bold);
            gr.DrawString("Irregular Form Demo", f, new LinearGradientBrush(gr.VisibleClipBounds,
                Color.Blue, Color.Black, LinearGradientMode.BackwardDiagonal), rf);
            f.Dispose();
            gr.Dispose();
            gp.Dispose();
            r.Dispose();
        }

کد بالا را طبق معمول پستهای قبل بعد از:

کد:
        public Form1()
        {
            InitializeComponent();
        }

اضافه کنید.

c2.jpg
 

elham821

Member
back color فرم در سی شارپ

با سلام خدمت دوستان
يه برنامه ساعت آنالوگ با #C دارم مي خوام وقتي اجرا مي شه فقط ساعت نمايش داده بشه و پشت اون كه فرم هست ديده نشه، back color فرم رو control گذاشتم ولي باز هم فرم ديده ميشه اگر هم opacity فرم رو 0 كنم اصلا ساعت هم ديده نميشه.
كسي مي دونه بايد چي كارش كنم كه فرم ديده نشه؟
 

elham821

Member
خود ساعت رو نوشتم حالا مي خوام وقتي برنامه اجرا مي شه فقط خود ساعت ديده بشه و مستطيل فرم پشتش ديده نشه
 

saalek110

Well-Known Member
صفت TransparencyKey فرم را هم روی Control بگذار.

28r2mig.gif

ولی شاید بهتر باشه هر دو ( بک کالر و صفت بالا) را روی رنگی بگذارید که استفاده ای نداشته باشد.(نمی دونم اصلا رنگی هست که استفاده نداشته باشه یا نه) چون با گذاشتن روی Control انگار تایتل بار را هم تحت اثر خود قرار می دهد. ولی فکر کنم شما می خواهید تایتل بار را هم حذف کنید که دیگه مهم نیست.
 

hosna12

New Member
سلام من يه گراف كشيدم وقتي ميخام ويرايشش كنم قبلي ها پاك ميشن چي كار كنم؟
 

جدیدترین ارسال ها

بالا