PDA

View Full Version : سوال: بررسی نقطه رنگ در مختصاتی از یک Picture Box



Slytherin
پنج شنبه 02 دی 1389, 13:11 عصر
دوستان چطوری می شه مثلا مختصات X,Y پیکچر باکسی رو بررسی کرد و مثلا اگر رنگش برابر با C بود شرط خاصی اجرا بشه؟

butterfly8528
پنج شنبه 02 دی 1389, 23:55 عصر
سلام دوست عزیز.


Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

Dim XX As Long, YY As Long, C As Long

Private Sub Form_Load()
Picture1.ScaleMode = vbPixels
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
XX = X: YY = Y
C = 264709
If GetPixel(Picture1.hdc, XX, YY) = C Then MsgBox C
End Sub




موفق باشید .

ali.rezaei7
جمعه 03 دی 1389, 00:07 صبح
درود.
همچنین از تابع Point این کنترل هم می تونید استفاده کنید.مقدار ایکس و ایگرگ را به تابع بدهید و خروجی را در قالب یک مقدار عددی دریافت کنید.

Slytherin
جمعه 03 دی 1389, 08:40 صبح
درود.
همچنین از تابع Point این کنترل هم می تونید استفاده کنید.مقدار ایکس و ایگرگ را به تابع بدهید و خروجی را در قالب یک مقدار عددی دریافت کنید.

مثال جناب butterfly8528 کامل بود و کارم رو راه انداخت.
امکانش هست شما یک مثال برای کار با این تابع بزنید؟
دوستان کدام روش رو توسعه می کنند؟

Slytherin
جمعه 03 دی 1389, 08:48 صبح
فقط یک سوالی در کد های جناب butterfly8528 برای من پیش اومده،
شماره رنگ ها بر اساس چه واحدی هست؟
مطمئنا بر مبنای 16 نیست، چطوری می شه مثلا #FFFFFF رو به این شماره تبدیل کرد؟

ali.rezaei7
جمعه 03 دی 1389, 10:06 صبح
نمونه کد:
Dim c As Long,X As Long,Y As Long
c=youcolor
X=Xposition
Y=Yposition
If Picturebox1.Point(X,Y)=c Then msgbox "equal"
در متغیر سی عدد رنگ خود را قرار دهید. فرقی نمی کنه که تو چه مبنایی باشه.
در متغیرهای ایکس و ایگرگ هم نقطه مورد بررسی را قراربدید.
درمورد تبدیل مبنا هم باید بگم که برنامه این کاررو بصورت خودکار انجام می ده نیازی نیست کاری بکنید.

Slytherin
جمعه 03 دی 1389, 10:33 صبح
ممنون از پاسختون، اما من متوجه نمی شوم که،
مثلا چطوری می شه #ffffff رو به یک متغییر Long داد؟!

Slytherin
جمعه 03 دی 1389, 10:34 صبح
فراموش کردم که بگم، من به طور مستقیم مثلا مقدار #ffffff را به متغیر دادم اما برنامه به درستی عمل نکرد...

ali.rezaei7
جمعه 03 دی 1389, 10:45 صبح
در ابتدای عدد از علامت H& بجای # استفاده کنید.
منظورتون از اینکه می گید برنامه درست عمل نکرد چیه؟

Slytherin
جمعه 03 دی 1389, 11:24 صبح
H& رو اضافه کردم، مشکل حل شد، ممنون.