امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
تابع گرفتن پیکسل از صفخه نمایش
نویسنده پیام
edifier آفلاین
كاربر تک ستاره
*

ارسال‌ها: 25
موضوع‌ها: 15
تاریخ عضویت: شهریور ۱۳۸۷

تشکرها : 1
( 4 تشکر در 4 ارسال )
ارسال: #1
تابع گرفتن پیکسل از صفخه نمایش
سلام به همه
یه تابع میخوام که به پیکسلهای صفحه نمایش دسترسی داشته باشم.یعنی بتونم رنگشون رو در بیارم.
منظورم از خود فرم برنامه نیست بلکه هرجایی از مانیتور.
سرعتش مهمه.
کیست مرا یاری کند؟
۱۶-آبان-۱۳۸۷, ۱۷:۴۶:۵۸
ارسال‌ها
پاسخ
saeedsmk آفلاین
مدیر بخش کرک و کامپیوتر
*****

ارسال‌ها: 506
موضوع‌ها: 74
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 677
( 1179 تشکر در 348 ارسال )
ارسال: #2
RE: تابع گرفتن پیکسل از صفخه نمایش
سلام
خوب هستيد براي اين كار شما ميتونيد از تابع GetPixel استفاده كنيد .
اميدوارم كمك كنه

در دنياي كه مرگ شكارچي ان است بايد شكارچي بود - تعليمات دون خوان نوشته كارلوس كاستاندار
۱۶-آبان-۱۳۸۷, ۱۷:۵۳:۳۷
ارسال‌ها
پاسخ
تشکر شده توسط : HoseinVig
saeedsmk آفلاین
مدیر بخش کرک و کامپیوتر
*****

ارسال‌ها: 506
موضوع‌ها: 74
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 677
( 1179 تشکر در 348 ارسال )
ارسال: #3
RE: تابع گرفتن پیکسل از صفخه نمایش
سلام
خوب هستيد
فكر كنم اين مثال نحوه كار اين تابع رو به راحتي نشون بده
کد:
'Example by Thomas Gobler (ThomasGobler@msn.com)
Option Explicit
Private Type GRADIENT_TRIANGLE
    Vertex1 As Long
    Vertex2 As Long
    Vertex3 As Long
End Type
Private Type TRIVERTEX
    X As Long
    Y As Long
    Red As Integer 'Ushort value
    Green As Integer 'Ushort value
    Blue As Integer 'ushort value
    Alpha As Integer 'ushort
End Type
Private Type GRADIENT_RECT
    UpperLeft As Long  'In reality this is a UNSIGNED Long
    LowerRight As Long 'In reality this is a UNSIGNED Long
End Type
Const GRADIENT_FILL_RECT_H As Long = &H0 'In this mode, two endpoints describe a rectangle. The rectangle is
'defined to have a constant color (specified by the TRIVERTEX structure) for the left and right edges. GDI interpolates
'the color from the top to bottom edge and fills the interior.
Const GRADIENT_FILL_RECT_V  As Long = &H1 'In this mode, two endpoints describe a rectangle. The rectangle
' is defined to have a constant color (specified by the TRIVERTEX structure) for the top and bottom edges. GDI interpolates
' the color from the top to bottom edge and fills the interior.
Const GRADIENT_FILL_TRIANGLE As Long = &H2 'In this mode, an array of TRIVERTEX structures is passed to GDI
'along with a list of array indexes that describe separate triangles. GDI performs linear interpolation between triangle vertices
'and fills the interior. Drawing is done directly in 24- and 32-bpp modes. Dithering is performed in 16-, 8.4-, and 1-bpp mode.
Private Declare Function GradientFillTriangle Lib "msimg32" _
Alias "GradientFill" (ByVal hDC As Long, pVertex As TRIVERTEX, _
ByVal dwNumVertex As Long, pMesh As GRADIENT_TRIANGLE, ByVal dwNumMesh As Long, _
ByVal dwMode As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Sub Form_Load()
    Dim vert(4) As TRIVERTEX
    Dim gTRi(1) As GRADIENT_TRIANGLE
    ScaleMode = vbPixels
    AutoRedraw = True
    Move Left, Top, 3945, 4230
    vert(0).X = 0
    vert(0).Y = 0
    vert(0).Red = -256
    vert(0).Green = 0&
    vert(0).Blue = 0&
    vert(0).Alpha = 0&
    
    vert(1).X = 255
    vert(1).Y = 0
    vert(1).Red = 0&
    vert(1).Green = -256
    vert(1).Blue = 0&
    vert(1).Alpha = 0&
    
    vert(2).X = 256
    vert(2).Y = 256
    vert(2).Red = 0&
    vert(2).Green = 0&
    vert(2).Blue = -256
    vert(2).Alpha = 0&
    
    vert(3).X = 0
    vert(3).Y = 256
    vert(3).Red = -256
    vert(3).Green = -256
    vert(3).Blue = -256
    vert(3).Alpha = 0&
    
    gTRi(0).Vertex1 = 0
    gTRi(0).Vertex2 = 1
    gTRi(0).Vertex3 = 2
    
    gTRi(1).Vertex1 = 0
    gTRi(1).Vertex2 = 2
    gTRi(1).Vertex3 = 3
    GradientFillTriangle hDC, vert(0), 4, gTRi(0), 2, GRADIENT_FILL_TRIANGLE
    Form1.Show
End Sub
Private Function RgbParse(hDC As Long, X As Single, Y As Single) As String
    Dim ColorMe As Long
    ColorMe = GetPixel(hDC, X, Y)
    Dim rgbRed, rgbGreen, rgbBlue As Long
    rgbRed = Abs(ColorMe Mod &H100)
    ColorMe = Abs(ColorMe \ &H100)
    rgbGreen = Abs(ColorMe Mod &H100)
    ColorMe = Abs(ColorMe \ &H100)
    rgbBlue = Abs(ColorMe Mod &H100)
    ColorMe = RGB(rgbRed, rgbGreen, rgbBlue)
    RgbParse = "RGB(" & rgbRed & ", " & rgbGreen & ", " & rgbBlue & ")"
End Function
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Caption = RgbParse(hDC, X, Y)
End Sub
به اميد ديدار

در دنياي كه مرگ شكارچي ان است بايد شكارچي بود - تعليمات دون خوان نوشته كارلوس كاستاندار
۱۷-آبان-۱۳۸۷, ۱۰:۰۷:۱۳
ارسال‌ها
پاسخ
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #4
RE: تابع گرفتن پیکسل از صفخه نمایش
(۱۶-آبان-۱۳۸۷, ۱۷:۴۶:۵۸)edifier نوشته است: منظورم از خود فرم برنامه نیست بلکه هرجایی از مانیتور.
سرعتش مهمه.

سلام

تو این برنامه (فایل پیوست) یه عکس از Desktop می گیریم و توی یه PictureBox میذاریم بعد محل ماوس رو با تابع GetCursorPos تشخیص میدیم و رنگ نقطه ای از PictureBox رو که مختصاتش برابر X, Y ماوس هست برمیگردونیم.

نکته: قبل از گرفتن عکس فرم خودمون رو باید از صفحه ببریم بیرون.

تشکر: با تشکر از عزیزی که کد عکس گرفتن از صفحه نمایش رو توی ایرانویج گذاشته بود.
کد:
'http://loosh6.persianblog.com/
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
'http://loosh6.persianblog.com/
Private Sub Form_Load()
Dim Ww, Hh As Long
Ww = Screen.Width \ 15
Hh = Screen.Height \ 15
StretchBlt hdc, 0, 0, Ww, Hh, GetDC(0&), 0, 0, Ww, Hh, vbSrcCopy
End Sub
'http://loosh6.persianblog.com/
نکته: برای دسترسی به بستر دستگاهی که شامل تمام صفحه نمایش باشه باید از تابع GetDC با مقدار ByVal 0 بعنوان پارامتر استفاده کنیم.


فایل‌(های) پیوست شده
.rar   Pick Color.rar (اندازه: 8.05 KB / تعداد دفعات دریافت: 65)


(آخرین ویرایش در این ارسال: ۱۹-آبان-۱۳۸۷, ۰۰:۲۵:۰۷، توسط mojtabamalaekeh.)
۱۹-آبان-۱۳۸۷, ۰۰:۲۳:۳۲
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [فوری] درخواست سورس پنهان شدن فرم و نمایش فقط متن لیبل ها . مجتبی میر 1 1,066 ۳۱-فروردین-۱۳۹۹, ۱۹:۴۱:۰۳
آخرین ارسال: مجتبی میر
  جستجو بین دو دو تاریخ و نمایش اطلاعات بین دو تاریخ mahdi61 1 3,020 ۰۵-دى-۱۳۹۵, ۰۲:۳۰:۳۴
آخرین ارسال: Ghoghnus
  گرفتن متن فارسی و نمایش آن از فایل متنی GTAexcess 2 3,065 ۱۳-اردیبهشت-۱۳۹۵, ۱۴:۰۸:۴۷
آخرین ارسال: Ghoghnus
  نمایش وایرلس و آیپی آن Vb6Moderator 1 2,803 ۲۶-شهریور-۱۳۹۴, ۰۹:۲۶:۴۷
آخرین ارسال: moderator
  مشکل ماژول گرفتن اطلاعات سیستم hossein161 1 2,792 ۲۰-شهریور-۱۳۹۴, ۱۵:۲۲:۲۲
آخرین ارسال: Payman62
  [سوال] گرفتن شماره ستون و ردیف از رنج مشخص به شکل داینامیک eppagh 0 2,162 ۰۶-اسفند-۱۳۹۳, ۲۰:۱۸:۱۳
آخرین ارسال: eppagh
  کمک برای گرفتن خروجی در EXCEL javad917 4 5,369 ۱۵-آبان-۱۳۹۳, ۱۴:۵۸:۵۴
آخرین ارسال: javad917
  نمایش آخرین خط تکت باکس mahdi321 2 3,122 ۱۷-مرداد-۱۳۹۳, ۱۸:۵۳:۴۴
آخرین ارسال: Vb6Moderator
  مدیریت و نمایش پیغام مناسب برای خطاهای احتمالی sepahbod 3 3,674 ۱۴-فروردین-۱۳۹۳, ۲۲:۰۶:۴۹
آخرین ارسال: Di Di
  مشکل در تماس گرفتن MSComm mahdi321 3 4,039 ۰۶-فروردین-۱۳۹۳, ۱۹:۴۶:۲۸
آخرین ارسال: Ghoghnus

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS