PDA

View Full Version : رسم دایره در فرم



test15000
یک شنبه 17 دی 1391, 16:41 عصر
با سلام چجوری میشه تو فرم یک دایره کشید
همچنین چه جوری داخلش رو رنگ کرد و چک کرد اگه رنگش قرمز بود فلان کار انجام بشه؟

group45
یک شنبه 17 دی 1391, 17:41 عصر
سلام
اولا نیاز به هدر system.drawing دارید
دوما تو ایونت Form1_Paint باید کداتون رو بنویسید
سوما (فقط راهنمایی میکنم) از متدهای e.graphics و یا حتی graphics استفاده کنید

the king
یک شنبه 17 دی 1391, 22:54 عصر
با سلام چجوری میشه تو فرم یک دایره کشید
همچنین چه جوری داخلش رو رنگ کرد و چک کرد اگه رنگش قرمز بود فلان کار انجام بشه؟

اول داخل کلاس فرم یک متغیر bmp تعریف می کنیم که یک Bitmap است و می توانیم داخلش تصویری رسم کنیم.
بعد برای Form دو تا رخداد رو مدیریت می کنیم، رسم فرم (Paint) و فشار دادن دکمه ماوس (MouseDown)، در کل این سه سطر اضافه می شود :


public partial class Form1 : Form
{
Bitmap bmp;
public Form1()
{
InitializeComponent();
this.Paint += new PaintEventHandler(Form1_Paint);
this.MouseDown += new MouseEventHandler(Form1_MouseDown);
}


سپس یک کد برای رخداد فشار ماوس می نویسیم که اگر زیرش رنگی در مایه های قرمز بود پیغامی نشان دهد :


void Form1_MouseDown(object sender, MouseEventArgs e)
{
if ((e.X >= 0) && (e.X < bmp.Width) && (e.Y >= 0) && (e.Y < bmp.Height))
{
if (bmp.GetPixel(e.X, e.Y).GetHue() == Color.Red.GetHue())
{
MessageBox.Show("Red");
}
}
}


و برای رخداد رسم کردن فرم هم رسم یک دایره رو می نویسیم :


void Form1_Paint(object sender, PaintEventArgs e)
{
if (bmp == null)
{
bmp = new Bitmap(200, 200);
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(Color.FromArgb(0, 0, 0, 0));
g.FillEllipse(Brushes.Red, 50, 50, 150, 150);
}
}
e.Graphics.DrawImage(bmp, 0, 0);
}