Преобразование цвета

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Преобразование цвета

Сообщение NIC » 15.02.2008 (Пт) 9:18

Я накидал програмку получения номера цвета точки экрана.
В силу "обратного" представления цвета в VB ,пришлось обменять (SWAP),"байты",Red и Blue. Получилось очень криво!
Хотелось бы узнать,есть ли стандартные функции для этого действия.Полагаю,что,если использовать стандартные функции,то такого обмена не потребуеться.

Код: Выделить всё
Public Class Form1

    Private Structure POINTAPI
        Public x As Int32
        Public y As Int32
    End Structure

    Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Int32
    Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Int32) As Int32
    Private Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As Int32, ByVal x As Int32, ByVal y As Int32) As Int32

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim c As Int32
        Dim nc As String
        Dim nc1 As String
        Dim cur As POINTAPI
        GetCursorPos(cur)
        c = GetPixel(GetDC(0), cur.x, cur.y)
        c = c Or &HFF000000
        nc = Hex(c)
        nc1 = Mid(nc, 7, 2)
        Mid(nc, 7, 2) = Mid(nc, 3, 2)
        Mid(nc, 3, 2) = Mid(nc1, 1, 2)
        PictureBox1.BackColor = Color.FromArgb(Val("&h" & nc))
    End Sub
End Class


Заранее спасибо.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 15.02.2008 (Пт) 10:23

Public Shared Function FromOle(ByVal oleColor As Integer) As System.Drawing.Color
Member of System.Drawing.ColorTranslator

это?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 15.02.2008 (Пт) 10:37

Sebas,да именно это.
А как можно заменить GetDc ну,или по-другому получить Handle рабочего стола?


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 2

    TopList