PDA

View Full Version : سوال: کار با پیکسل ها



Mos_Zamani
پنج شنبه 13 خرداد 1389, 21:58 عصر
با سلام
من می خوام با پیکسل های فرم کار کنم. و بتونم خاموش و روشن یا تغییر رنگ شون بدم.
با تشکر

محمد فدوی
پنج شنبه 13 خرداد 1389, 23:35 عصر
من استفاده از Graphics رو به شما پیشنهاد می دم، استفاده ازش خیلی آسونه، مثلا:

Dim G as Graphics = Me.CreateGraphics

به جای Me می تونید هر کنترل دیگه ای رو بذارید.
داخل Graphics همه چیز هست.

Mos_Zamani
پنج شنبه 13 خرداد 1389, 23:49 عصر
من استفاده از Graphics رو به شما پیشنهاد می دم، استفاده ازش خیلی آسونه، مثلا:

Dim G as Graphics = Me.CreateGraphics

به جای Me می تونید هر کنترل دیگه ای رو بذارید.
داخل Graphics همه چیز هست.

چیزی به عنوان Setpixel اینجا نیست. تو bitmap هست. ولی نمی دونم چرا تغییر نمی کنه.
MyPixel.SetPixel(100, 0, System.Drawing.Color.Black)

Mos_Zamani
جمعه 14 خرداد 1389, 00:36 صبح
من کد زیر رو نوشتم ولی رنگ پیکسل ها تغییری نکرد.
For i As Integer = 0 To 100
For j As Integer = 0 To 100
MyPixel.SetPixel(i, j, myColor)
Next j
Next i
چرا؟

Shahram_Shobeiri
جمعه 14 خرداد 1389, 01:13 صبح
بعد از هر کار گرافیکی روی فرم باید فرم رو ریفرش کنید. این کار رو می کنید؟
کد کاملتون رو بگذارید تا بیشتر راهنمایی کنیم.

Mos_Zamani
جمعه 14 خرداد 1389, 12:09 عصر
بعد از هر کار گرافیکی روی فرم باید فرم رو ریفرش کنید. این کار رو می کنید؟
کد کاملتون رو بگذارید تا بیشتر راهنمایی کنیم.
آره. این کار رو کردم. ولی فایده ای نداشت. وقتی شی گرافیکی می کشم بعد از رفرش پاک می شن.


Dim MyPixel As System.Drawing.Bitmap
Dim myColor As System.Drawing.Color
myColor = System.Drawing.Color.FromArgb(255, 255, 255, 255)
MyPixel = New Bitmap(Me.Width, Me.Height)
MessageBox.Show(MyPixel.GetPixel(100, 100).ToString())
For i As Integer = 0 To 100
For j As Integer = 0 To 100
MyPixel.SetPixel(i, j, myColor)
Next j
Next i

محمد فدوی
شنبه 15 خرداد 1389, 12:22 عصر
اگر شما می خواهید فقط یک سری پیکسل را روشن کنید که به نظر من نیازی به این کارها نیست، مثلاً کدی که شما نوشتید معادل کد زیر است:


Dim G As Graphics = Me.CreateGraphics
Dim Clr As Drawing.Color = Color.FromArgb(255,255,255,255)
Dim Pn As New Pen(Clr)
Dim FirstPt as New Point(1,1)
Dim SecPt As New Point(100,100)
G.DrawLine(Pn,FirstPt,SecPt)

محمد فدوی
شنبه 15 خرداد 1389, 12:27 عصر
آره. این کار رو کردم. ولی فایده ای نداشت. وقتی شی گرافیکی می کشم بعد از رفرش پاک می شن.


Dim MyPixel As System.Drawing.Bitmap
Dim myColor As System.Drawing.Color
myColor = System.Drawing.Color.FromArgb(255, 255, 255, 255)
MyPixel = New Bitmap(Me.Width, Me.Height)
MessageBox.Show(MyPixel.GetPixel(100, 100).ToString())
For i As Integer = 0 To 100
For j As Integer = 0 To 100
MyPixel.SetPixel(i, j, myColor)
Next j
Next i

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