PDA

View Full Version : مشکل در تنظیم کردن خاصیت sizemode در زمان اجرا



adineh67
یک شنبه 30 آذر 1393, 14:07 عصر
سلام به دوستان برنامه نویس
تو برنامم یه پیکچرباکس دارم میخوام وقتی بک گراند رو مشخص کردم یه تصویر دیگه در حد آیکن روی بک گراند رسم شه،اگه تصویر بک گراند رو مستقیم به خاصیت image کنترل پیکچر بدم دیگه آیکن روش رسم نمیشه واسه همین تصویر بک گراند رو هم رسم کردم حالا مشکلی که دارم اینه که بعد ترسیم بک گراند خاصیت sizemode روی تصویر جواب نمیده
کدم رو گذاشتم ممنون میشم راهنماییم کنید

Bitmap bitmap = new Bitmap(pictureBox1.Size.Width, pictureBox1.Size.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb );
Graphics ModelGraphic = Graphics.FromImage(bitmap);
Image newImage1 = Image.FromFile(TXTcat.Text);
ModelGraphic.DrawImage(newImage1, 0, 0);
string savepath = AppDomain.CurrentDomain.BaseDirectory;
Image newImage = Image.FromFile(savepath + "\\" + "image.png");
ModelGraphic.DrawImage(newImage, ulCorner);
pictureBox1.Image = bitmap;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

winner1
یک شنبه 30 آذر 1393, 15:35 عصر
جواب نمیده یعنی چی دوتا تصویر میزاشتین از مراحل اجرا اینطوری گنگه بخدا داداش نمیشه جواب داد چون نمیدونیم مشکل چیه :لبخند:

adineh67
یک شنبه 30 آذر 1393, 15:57 عصر
126763

توضیح عکس:یه تصویر مثل محور پایینی دارم میخوام براش بک گراند تعیین کنم و وقتی بک گراند مشخص شد دوباره اون بالنهای آبی روی تصویر قرار بگیرند اون کدیو که بالا نوشتم این کارو میکنه فقط مشکلم اینه که چجوری عکس به اندازه پیکچرباکس دربیاد؟
میدونم که خصوصیت sizemode اگه برابر StretchImage بشه درست میشه ولی نمیدونم چرا تو کدی که نوشتم جواب نمیده.

Mahmoud Zaad
یک شنبه 30 آذر 1393, 17:14 عصر
سلام
خط اول رو به صورت زیر بنویسید (به جای Size از Image استفاده کنید تا اندازه تصویر اصلی رو اعمال کنه نه اندازه پیکچرباکس رو):

Bitmap bitmap = new Bitmap(pictureBox1.Image.Width, pictureBox1.Image.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb );

adineh67
یک شنبه 30 آذر 1393, 18:52 عصر
سلام
خط اول رو به صورت زیر بنویسید (به جای Size از Image استفاده کنید تا اندازه تصویر اصلی رو اعمال کنه نه اندازه پیکچرباکس رو):

Bitmap bitmap = new Bitmap(pictureBox1.Image.Width, pictureBox1.Image.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb );


این کدو نوشتم ولی جواب نداد :افسرده:

Mahmoud Zaad
یک شنبه 30 آذر 1393, 19:18 عصر
من همین چیزی که شما گفتی رو انجام میدم مشکلی هم نداره، یعنی تو حالت طراحی یه تصویر برای پیکچر باکس ست کردم (یعنی همون خاصیت Imageش) بعد هم کدها رو نوشتم، یعنی قبل از اجرای کدهای اصلی باید تصویر بکگراند رو روی پیکچرباکس ست کنید.

behzadkhan
یک شنبه 30 آذر 1393, 19:54 عصر
با سلام

دوست عزیز

احتمالا قبل از کدهایی که قرار دادید. کدی وجود دارد که محتوی image موجود در picturebox را با محتوای خود picturebox یکی کرده.
یعنی شما یک تصویری در picturebox قرار دادید که به هر دلیل کوچکتر از اندازه picurebox بوده سپس اون قسمت خالی واون قسمت پر picturebox را به image تبدیل کرده.

با تشکر

adineh67
یک شنبه 30 آذر 1393, 20:43 عصر
با سلام

دوست عزیز

احتمالا قبل از کدهایی که قرار دادید. کدی وجود دارد که محتوی image موجود در picturebox را با محتوای خود picturebox یکی کرده.
یعنی شما یک تصویری در picturebox قرار دادید که به هر دلیل کوچکتر از اندازه picurebox بوده سپس اون قسمت خالی واون قسمت پر picturebox را به image تبدیل کرده.

با تشکر

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

adineh67
یک شنبه 30 آذر 1393, 20:46 عصر
من همین چیزی که شما گفتی رو انجام میدم مشکلی هم نداره، یعنی تو حالت طراحی یه تصویر برای پیکچر باکس ست کردم (یعنی همون خاصیت Imageش) بعد هم کدها رو نوشتم، یعنی قبل از اجرای کدهای اصلی باید تصویر بکگراند رو روی پیکچرباکس ست کنید.

من میخوام کاربر خودش بتونه بک گراند دلخواه تعیین کنه واسه همین تو طراحی نمیتونم بک گراند تعیین کنم

Mahmoud Zaad
یک شنبه 30 آذر 1393, 20:50 عصر
خب شما این یه خط کد رو اول کدهاتون بنویسید مشکل حل میشه:
pictureBox1.Image = Image.FromFile(TXTcat.Text);

یه پیشنهاد هم داشتم، اگه برای نمای بالا برای نشون دادن نقطه مورد نظر به جای بالون (یا pin) از یه شکل دایره ای (شبیه رادیوباتنی که چک شده)، استفاده کنید بهتره، چون مثلاً دید کاربر از بالاست!!

behzadkhan
یک شنبه 30 آذر 1393, 20:52 عصر
با سلام

دوست عزیز

آیا این امکان وجود دارد که برنامه را بطور کامل قرار بدبد.

با تشکر

adineh67
یک شنبه 30 آذر 1393, 21:06 عصر
با سلام

دوست عزیز

آیا این امکان وجود دارد که برنامه را بطور کامل قرار بدبد.

با تشکر
تشکر از شما بابت وقتی که گذاشتین
حجم برنامه بالاست نمیتونم این کارو بکنم فقط توضیحی که لازم هست بدم اینه که به هنگام لود شدن صفحه ی موردنظر کدهایی نوشتم که محور مختصات و اون بالن ها رو رسم میکنه وبعد لود شدن وقتی کاربر دکمه ی اعمال تغییرات رو واسه تعیین بک گراند میزنه کدهایی که در بالا نوشتم اجرا میشه

adineh67
یک شنبه 30 آذر 1393, 21:08 عصر
یه پیشنهاد هم داشتم، اگه برای نمای بالا برای نشون دادن نقطه مورد نظر به جای بالون (یا pin) از یه شکل دایره ای (شبیه رادیوباتنی که چک شده)، استفاده کنید بهتره، چون مثلاً دید کاربر از بالاست!!

ممنونم بابت پیشنهادتون خودم چون در حال کدنویسی ام ذهنم یاری نمیکنه ممنونم که توجه کردین :لبخندساده:

adineh67
یک شنبه 30 آذر 1393, 21:17 عصر
خب شما این یه خط کد رو اول کدهاتون بنویسید مشکل حل میشه:
pictureBox1.Image = Image.FromFile(TXTcat.Text);


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

Mahmoud Zaad
یک شنبه 30 آذر 1393, 21:22 عصر
احتمالاً sizeMode رو هم باید بعد از این خط تنظیم کنید،
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

adineh67
یک شنبه 30 آذر 1393, 21:31 عصر
مشکل از این خط

Bitmap bitmap = new Bitmap(pictureBox1.Image.Width, pictureBox1.Image.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb );


اگه به جای image بنویسم size بالنها سرجاشون قرار میگیرن ولی دوباره تصویر زمینه بهم میریزه

aminmousavi
دوشنبه 01 دی 1393, 02:53 صبح
سلام دوست عزیز . مشکلی که شما دارین برای اینکه عکستون فیت picturebox نیست و دلیل اینکه وقتی روی picturebox زیری کلیک میکنین و در جای دقیق عکس بالون کشیده نمیشه همینه ! مثلا وقتی روی مختصات x=100 y=50 کلیک میکنین (در picurebox) و میگین روی مختصات 100,50 عکس ، عکس بالون کشیده بشه . پیکسل هایی که واقعا شما میخواستید در اونجا کشیده باشه ممکنه 60,20 باشه. به عبارت ساده تر وقتی از sizemode استفاده میکنین دیگه مختصات picurebox با تصویرتون همخوانی نداره . برای پیدا کردن همخوانی باید مقداری پیچیدگی کدتون رو بیشتر کنین !

یک نمونه براتون نوشتم که ساده ترین روش ممکن هست (تا جایی که بنده اطلاع دارم) که از لینک زیر میتونین دانلود کنین ، اما خوب هر روش ساده ای مشکلات خودش رو داره ، توی این روشی که پیاده سازی کردم بجای استفاده از sizemode خود picturebox ، خود عکس ریسایز میشه که همچین قالبیت هایی رو ازتون میگیره که نمیتونین از عکس بشکل غیر ریسایز شده استفاده کنین .

www.greendeveloper.ir/files/StreachImage.rar

adineh67
دوشنبه 01 دی 1393, 14:42 عصر
www.greendeveloper.ir/files/StreachImage.rar (http://www.greendeveloper.ir/files/StreachImage.rar)
کدی که گذاشتین کارمو راه انداخت :تشویق:
سپاس از وقتی که گذاشتین