PDA

View Full Version : سوال: گرافیک در #c



zeinabrezaee
پنج شنبه 09 آذر 1391, 17:44 عصر
من یه پروژه گرافیکی نوشتم با بیت مپ یه منظره است که یه جاده پیچ دار داره و یه ماشین از اون جاده حرکت میکنه اما حرکت ماشینم درست نیست مستقیمه.و مشکل دیگه اینه که بعد از هر حرکت ماشین حرکت فبلی پاک نمیشه...

hamed_hossani
پنج شنبه 09 آذر 1391, 19:23 عصر
http://upcity.ir/images/85052281783554427635.gif
سلام
نگاش کردم !
من تو c# قسمت گرافیک و کار کردن با bitmap زیاد کار نکردم
فصل گرافیک کتاب محمد هاشمیان 2005 را خوندم.زیاد پیشرفته نیست

imann100
پنج شنبه 09 آذر 1391, 22:11 عصر
اونجا فقط اونجا اسم برده شده و هیچ توضیحی داده نشده

s3rv3r
پنج شنبه 09 آذر 1391, 22:30 عصر
سرگیجه گرفتم این چه وضعه کده ازش سر درنیاوردم والا برات درستش میکردم میزاشتم.

حل مشکل اولت اینه رو تصویر اصلیت دائم در حال رسم مستطیل هستی. راه حل : یه نمونه از تصویری جادت هر دفعه بساز و رو نمونه جدیدت رسم کن
اما برای روش چرخش مستطیل عرض کنم چیزی که یادم مونده کلاس گرافیک یه تابعی داشت به اسم RotateTransform اگه استباه نکنم مستطیل رو به درجه ای که میدادی میچرخوند

saied_hacker
جمعه 10 آذر 1391, 10:06 صبح
مشکل رسم ماشین رو حل کردم فقط باید هر بار که ماشین رسم میشه ( من رو 5 بار تنظیمش کردم ) زمینه یه بار دیگه رسم بشه.
این تابع هر پنج باریکه حلقت اجرا میشه فراخانی میشه و زمشنه رو یه بار دیگه رسم میکنه:
private void startD()
{
//SolidBrush sb =new SolidBrush(Color.Transparent);
//g.FillRectangle(sb, 0, 0, b.Width, b.Height);

//zamine
Point p1, p2, p3, p4;
p1 = new Point(120, 20);
p2 = new Point(420, 20);
p3 = new Point(20, 270);
p4 = new Point(320, 270);
Point[] poly = { p1, p2, p4, p3 };
g.FillPolygon(Brushes.Green, poly);
g.DrawPolygon(new Pen(Brushes.Black), poly);


//jade
Point p5, p6;
p1 = new Point(80, 120);
p2 = new Point(60, 170);
p3 = new Point(270, 100);
p4 = new Point(250, 150);
p5 = new Point(352, 190);
p6 = new Point(332, 240);
Point[] road = { p1, p3, p5, p6, p4, p2 };
g.FillPolygon(Brushes.Gray, road);

Point s = new Point(0, 0);
//paye asiab
g.FillRectangle(Brushes.Gray, 150, 70, 10, 15);
g.DrawRectangle(new Pen(Brushes.Gray), 150, 70, 10, 15);
g.DrawImage(b, s);

}

اینجام گفتم تو هر 5 بار اجرا حلقه یه بار پس زمینه رو رسم کن :
if (c == 5)
{
startD();
c = 0;
}
++c;

برای مورب حرکت کردن ماشینم باید هر بار که میخاد رسم بشه y ش رو کاهش بدی و وقتی به وسط تصویر رسید ( مثلا فک کنم xl1>= 500 یه مقداری به yl اضافه بشه و قبلاش ( xl1<500) یه مقداری ازش کم بشه.

کدت خیلی درهم و ورهم بود گ... گیجه میگیره ادم . یه اسم درست حسابی بزار کامنتی بزار بابا.
اینو همیشه مد نظر داشته باش :) (http://www.4shared.com/photo/wJI5ixPe/579227_203693413100197_1113237.html?)