PDA

نسخه کامل مشاهده نسخه کامل : كلاس bitmap سي شارپ



samira00
26-01-2010, 22:00
سلام به همه دوستان
من برنامه پازل باكلاس bitmap سي شارپ درا م مينويسم ميخوام برنامه يك combobox داشته باشه تا كاربر خود انتخاب كند كه عكس به چند قسمت تقسيم بشه مثلا 3*3يا 4*4 نميدونم بايد اين قسمت چي كار كنم كسي از دوستان ميتونه كمكم كنه .
ممنون ميشم

_H2_
27-01-2010, 16:30
سلام
یعنی مشکلتان فقط با تکه تکه کردن تصویر است؟
قبلاً در گفتگوهای مختلف بحث شده ...
باید از تابع DrawImage استفاده کنید و یک ناحیه دلخواه را جداکرده و رسم کنید و یا یک تصویر مستقل کنید و...

پست 3 و 4 این تاپیک:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

یا پست 3 این تاپیک:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

یا پست 4 این تاپیک:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

samira00
28-01-2010, 10:12
سلام ممنون
من مي خوام پازل تصاوير بنويسم.خودم عكس تقسيم بندي كردم ولي مي خوام برنامه طوري كار كنه كه خود كاربر با انتخاب از داخل combobox انتخاب كنه كه مي خواهد عكس مورد نظر خود به چند قسمت تقسيم بشه .در اين قسمتش مشكل دارم .بايد با كنترل هاي دايناميك كه خودمون درست مي كنيم باشه .
كدي كه من نوشتم:
داخل form برنامه از يك panel استفاده كردم و چندتا picture box. ولي حالا مي خوام اين picture box. به صورت دايناميك ايجاد بشه به تعدادي كه كاربر لازم داره.
ممنون ميشم راهنمايي كنيد.

///////////



if (openFileDialog1.ShowDialog() == DialogResult.OK)

{



a.Clear();

Bitmap ax = new Bitmap(openFileDialog1.FileName);

Image.GetThumbnailImageAbort m = new Image.GetThumbnailImageAbort(callback);

Image tmp = ax.GetThumbnailImage(400, 400, m, IntPtr.Zero);

ax = (Bitmap)tmp;

int x = 0; int y = 0;

for (int i = 0; i < 16; i++)

{

Rectangle r = new Rectangle(x, y, 100, 100);

puzzel[i] = ax.Clone(r, ax.PixelFormat);

x += 100;

if (i % 4 == 3) { x = 0; y += 100; }

if (i == 3) puzzel[i] = null;

picture[i].Image = puzzel[i];

a.Add(puzzel[i]);

}

for (int i = 0; i < 16; i++)

{

if (a.Count == 0) break;

Random ra = new Random();

int t = ra.Next(0, a.Count );

Bitmap pt=(Bitmap)a[t];

picture[i].Image = pt;

a.Remove(pt);

}

_H2_
31-01-2010, 11:36
سلام
درست متوجه مقصود و هدف کدهایی که گذاشتید نشدم!
الآن مشکلتان با تکه تکه کردن تصویر است یا با ایجاد Runtime کنترلرهای PictureBox ؟

برای تکه تکه کردن که از همان سه لینک قبلی استفاده کنید.

برای ایجاد کنترلر Runtime هم بهتر است یک Panel بگذارید و کنترلرها را داخل ان ایجاد کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

( البته راه های گرافیکی +GDI هم وجود دارد که بجز ساخت آرایه Runtime کنترلرها است ولی برای شما سخت خواهد بود. )

موفق باشید.

samira00
31-01-2010, 20:56
سلام
من با اين كدها تصوير تكه تكه كردم و به صورت random داخل يك panel با picture box قرار دادم و حالا مي خوام كه طوري باشه كه بتونيم انتخاب كنيم كه عكس به چند قسمت تقسيم شود و داخل panel چيده شود و picture box به صورت دايناميك درست كنم .اين كدي كه نوشتك panel به 16 قسمت تقسيم ميشه و عكس به 15 قسمت و يك جاي خالي. حالا مي خوام كد طوري باشه كه بتونم تقسيم بندي رو تغير بدم (كاربر خودش بتونه انتخاب كنه كه تصوير چند در چند داخل panel چيده شود) .
از كدهاي كه برام نوشتيد ممنون.

_H2_
01-02-2010, 01:21
سلام
کد فوق العاده ساده و اموزشی زیر کارتان را انجام میدهد ...
سعی کنید درک کنید و کد را برای رسیدن به هدف نهایی خودتان تکمیل کنید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در نهایت با دستوری مثل این میتوانید تصویر بزرگ را تکه تکه کرده و در کنترلرهای داخل Panel1 ای که جای دهید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

با دستوری مثل این هم میتوانید قطعات ساخته شده را شانسی در هم مخلوط کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

samira00
02-02-2010, 14:08
سلام
ممنونم لطف كرديد.