SajjadKhati
کاربر فعال <A href="http://forum.majidonline.com/f
آها ممنون استاد علی
حالا باز درکم از گرافیک ، بهتر شد
ولی بازم مشکل دارم
الان د زیر درسته :
این کد کار میکنه
ولی اگه BackgroundImageLayout در پشت زمینه ی فرم را عوض کنم مثلا بخشی کد رو در متد سازنده در بالا به کد زیر تغییر بدم :
رسم میکنه ولی بلافاصله بعد از رسم ، scale در پشت زمینه تغییر میکنه (که احتمالا باید واسه این باشه که scale در پشت زمینه ی فرم و همینطور در شی BitmapForGraphic ، یکی نباشه) ولی چرا؟ من که دقیق هر دو رو هم اندازه گرفتم
چجوری باید درست کنم؟
حالا باز درکم از گرافیک ، بهتر شد
ولی بازم مشکل دارم
الان د زیر درسته :
کد:
public partial class FormTest : Form
{
private Bitmap BitmapForGraphic;
private bool IsDrawGraphicFlag;
private Dictionary<Point, Color> GetPixelColorDic;
private Rectangle Rect;
public FormTest()
{
InitializeComponent();
this.BackgroundImage = new Bitmap(@"E:\Tasavir\Shahidan\1Hasan Ayat\Shahid Ayat.jpg");
this.BitmapForGraphic = new Bitmap(this.Width, this.Height);
Graphics AllOverGraphic = Graphics.FromImage(BitmapForGraphic);
AllOverGraphic.DrawImage(this.BackgroundImage, new Point(0, 0));
this.IsDrawGraphicFlag = false;
this.GetPixelColorDic = new Dictionary<Point, Color>();
}
private void btnDraw_MouseUp(object sender, MouseEventArgs e)
{
Button button = ((Button)sender);
if (e.Button == MouseButtons.Left)
{
this.IsDrawGraphicFlag = true;
button.Text = "Erase";
}
else if (e.Button == MouseButtons.Right)
{
this.IsDrawGraphicFlag = false;
button.Text = "Draw";
}
}
private void FormTest_MouseMove(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
if (this.IsDrawGraphicFlag == true)
{
if (this.GetPixelColorDic.ContainsKey(e.Location) == false)
{
Color mainPixelColor = this.BitmapForGraphic.GetPixel(e.Location.X, e.Location.Y); // رنگ اون پیکسل از بیت مپ که برابر رنگ پشت زمینه ی همون پیکسل از فرم هست را قبل از رسم بگیره
this.GetPixelColorDic.Add(e.Location, mainPixelColor); // اون رنگ و همون مختصات اش را ذخیره کنه
this.BitmapForGraphic.SetPixel(e.Location.X, e.Location.Y, Color.Green);
this.CreateGraphics().DrawImage(this.BitmapForGraphic, new Point(0, 0));
}
}
else
{
}
}
}
}
این کد کار میکنه
ولی اگه BackgroundImageLayout در پشت زمینه ی فرم را عوض کنم مثلا بخشی کد رو در متد سازنده در بالا به کد زیر تغییر بدم :
کد:
this.BackgroundImage = new Bitmap(@"E:\Tasavir\Shahidan\1Hasan Ayat\Shahid Ayat.jpg");
this.BackgroundImageLayout = ImageLayout.Stretch;
رسم میکنه ولی بلافاصله بعد از رسم ، scale در پشت زمینه تغییر میکنه (که احتمالا باید واسه این باشه که scale در پشت زمینه ی فرم و همینطور در شی BitmapForGraphic ، یکی نباشه) ولی چرا؟ من که دقیق هر دو رو هم اندازه گرفتم
چجوری باید درست کنم؟