PDA

View Full Version : کمک در مورد یک موضوع گرافیکی



haghft
پنج شنبه 05 اردیبهشت 1387, 11:58 صبح
من میخام با فشار دادن یک باتون،یک دایره روی فرم کشیده شود.
لطفا کد تست شده آن را برایم بگذارید.
:گیج::گیج::گیج:

علیرضا مداح
پنج شنبه 05 اردیبهشت 1387, 12:08 عصر
سلام ،
بسیار ساده :


private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawEllipse(Pens.Black, 10, 10, 50, 50);
}

aseman_ssm
جمعه 06 اردیبهشت 1387, 15:45 عصر
سلام این رو هم میتونی امتحان کنی.


Graphics g=this.CreateGraphics();
g.DrawCircle(,....);

haghft
یک شنبه 08 اردیبهشت 1387, 12:23 عصر
دوستان اینهایی که گفتید مشکل داره اولی که بدون فشار دادن باتون رسم میکنه و دومی این مشکل رو داره که اگر فرم یا هر چیز دیگری روی اون بیاد حتی اگر استارت منو رو باز کنی قسمتیش روی فرم بیفته شکل پاک میشه.این مشکلات حل بشه مگر نه من خودم این دو تا کد رو بلد بودم.

علیرضا مداح
یک شنبه 08 اردیبهشت 1387, 12:40 عصر
برای Persistent نمودن محتویات رسم شده میتوانید از شیء Bitmap استفاده کنید :
Using Bitmaps for Persistent Graphics in C# (http://techotopia.com/index.php/Using_Bitmaps_for_Persistent_Graphics_in_C_Sharp)

sinpin
یک شنبه 08 اردیبهشت 1387, 12:55 عصر
من میخام با فشار دادن یک باتون،یک دایره روی فرم کشیده شود.
لطفا کد تست شده آن را برایم بگذارید.
:گیج::گیج::گیج:


دوستان اینهایی که گفتید مشکل داره اولی که بدون فشار دادن باتون رسم میکنه و دومی این مشکل رو داره که اگر فرم یا هر چیز دیگری روی اون بیاد حتی اگر استارت منو رو باز کنی قسمتیش روی فرم بیفته شکل پاک میشه.این مشکلات حل بشه مگر نه من خودم این دو تا کد رو بلد بودم.

پس لطفا سئوال رو دقیقتر طرح کنید - چون دوستان به سئوال نوشته شده ی شما پاسخ دادند و نه به اون چیزی که نوشته نشده!

Mahdi.Kiani
دوشنبه 13 خرداد 1387, 11:59 صبح
سلام شما می تونید از یک متغیر استفاده کنید. و زمانی که اون متغیر true بود، دایره را بکشید.. و true کردن متغیر را هم در ریوداد کلیک دکمه بگذارید:

یه نمونه کوچیک براتوئن آپ می کنم
موفق باشید

Sajjad.Aghapour
دوشنبه 13 خرداد 1387, 12:31 عصر
جناب کیانی ممنون.......
کاربرد Invalidate() رو در اینجا فهمیدم....
ولی میشه کاربرد کلیش رو بگید........

Mahdi.Kiani
دوشنبه 13 خرداد 1387, 12:36 عصر
رویداد pint را فراخوانی می کنه و باعث میشه که کد هایی که در رویداد paint نوشتید مجددا اجرا شوند
از این متد در تهیه کامپوننت ها وکنترل های سفارشی بسیار زیاد استفاده میشه
مثلا و قتی یک کنترل می نویسید که background اون توسط 2 رنگ به صورت گرادیان ترسیم میشه، در پروپرتی های این دو رنگ این متد را فراخوانی می کنید که مجددا کنترل شما با مقدار رنگ جدید ترسیم شود

مثلا چیزی شبیه به کد زیر :




private Color firstGrdColor =Color.blue;

public Color FirstGrdColor
{

get {return firstGrdColor ;}
set
{
if(value != firstGrdColor)
{
firstGrdColor=value;
Invalidate();
}
}

}



البته بدون .net نوشتم ولی فکر نکنم مشکل syn هم داشته باشه

موفق باشید

Mahdi.Kiani
دوشنبه 13 خرداد 1387, 12:52 عصر
یک نمونه بسیار بسیار ساده عملی هم براتون میذارم .. باشد که مقدمه ای باشه برای حر کتتون به سمت ایجاد کنترل های سفارشی خودتون

البته این را همین الان( 30 ثانیه پیش) نوشتم.. پس لطفا به طرز کد نویسی آن ( اینکه کامنت نداره و ..) ایراد نگیرید

برناه را باز کنید.. روی فرم یک کنترل هست که دارای دو خاصیت color به نام های firstGrdColor و second... می باشد
با تغییر مقادیر ان ها می بینید که کنترل repaint می شود
موفق باشید