Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Замена цвета в битмапе Добавлено: 27.09.04 13:18  

Автор вопроса:  Comanche
Есть виртуальный контекст. В нём - виртуальный битмапчик. Нужно в нём полностью заменить один цвет на другой. Пока делаю это "в лоб": перебором всех пикселей битмапа (что терпимо только при маленьких размерах битмапа) + GetPixel + SetPixel. Некрасиво это... Нельзя ли покрасивше? наверняка должно решаться через "маски" и с помощью последнего аргумента BitBlt.

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 crackoff



ICQ: 156165990 

Вопросов: 12
Ответов: 229
 Профиль | | #1 Добавлено: 27.09.04 13:23
Имеем: с1-исходный цвет, с2-конечный. Теоретически (не пробовал) можно залить контекст (FillRect) c2, а потом TransparentBlt картинку на контекст с прозрачным цветом c1

Ответить

Номер ответа: 2
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #2 Добавлено: 27.09.04 19:59
Не получается.

[CODE]Private Sub Form_Click()
    Dim mDC As Long, mBitmap As Long, rct As RECT, mBrush As Long
    
    mDC = CreateCompatibleDC(GetDC(GetDesktopWindow))
    mBitmap = CreateCompatibleBitmap(GetDC(GetDesktopWindow), 34, 34)
    SelectObject mDC, mBitmap
    
    mBrush = CreateSolidBrush(vbBlue)
    SelectObject mDC, mBrush
    
    SetRect rct, 0, 0, 34, 34
    FillRect mDC, rct, mBrush
    
    TransparentBlt mDC, 0, 0, 34, 34, Picture1.hdc, 0, 0, 34, 34, vbRed
    ' в картинке Picture1 - бело-красный BMP размером 34 на 34 пикселя
    
    ' из виртуального контекста - на форму:
    BitBlt Me.hdc, 0, 0, 34, 34, mDC, 0, 0, vbSrcCopy
    
    DeleteObject mBrush
    DeleteObject mBitmap
    DeleteDC mDC
    
End Sub[/CODE]

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам