Модератор: BV
13GHOST писал(а):Может быть можно было сделать подругому
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC 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 dwRop As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
'объявляем всё, что нужно
Dim mDC As Long, mBitmap As Long, W As Long, H As Long, X As Long, Y As Long
'где-то в начале:
W=100 'ширина
H=100 'высота
mDC = CreateCompatibleDC(GetDC(0))
mBitmap = CreateCompatibleBitmap(GetDC(0),W,H)
SelectObject mDC, mBitmap
'потом рисуем в нём что-нибудь
For X=0 to W
For Y=0 to H
SetPixel mDC, X, Y, X+Y
Next Y
Next X
'копируем в кнопку
BitBlt Picture1.hdc,0, 0, W, H, mDC, 0, 0, vbSrcCopy
'уходя - гасите свет!
DeleteDC mDC
DeleteObject mBitmap
Faust писал(а):
- Код: Выделить всё
'потом рисуем в нём что-нибудь
For X=0 to W
For Y=0 to H
SetPixel mDC, X, Y, X+Y
Next Y
Next X
'копируем в кнопку
BitBlt Picture1.hdc,0, 0, W, H, mDC, 0, 0, vbSrcCopy
13GHOST писал(а):Сорри, все ok. Вот новая версия - более быстрая. Кстати если откомпилировать то еще быстрее будет.
tyomitch писал(а): А вот - сравни - то же, но без левых DC и без SetPixel-а
Да неплохо, вот только глюконат с цветами - делаешь красный появляется синий и наоборот
Mongoose писал(а):2 tyomitch
VB: программа выполнила недопустимую операцию и будет закрыта...
при изменении размеров кнопки на весь экран (1280*1024)
tyomitch писал(а):Faust писал(а):
- Код: Выделить всё
'потом рисуем в нём что-нибудь
For X=0 to W
For Y=0 to H
SetPixel mDC, X, Y, X+Y
Next Y
Next X
'копируем в кнопку
BitBlt Picture1.hdc,0, 0, W, H, mDC, 0, 0, vbSrcCopy
Не устаю напоминать, что для попиксельной отрисовки лучше и быстрее создание картинки в двумерном массиве и затем SetDIBitsToDevice - при этом даже не нужно создавать свой DC.
Mongoose писал(а):2 tyomitch
VB: программа выполнила недопустимую операцию и будет закрыта...
при изменении размеров кнопки на весь экран (1280*1024)
|kerish| писал(а):Для ускорения прорисовки предлагаю использовать обьекты Shape размером 1x1 с нужным цветом, которые нужно подгружать на весь размер кнопки при изменении размера.
Не верю, что от этого выйдет ускорение.|kerish| писал(а):Для ускорения прорисовки предлагаю использовать обьекты Shape размером 1x1 с нужным цветом, которые нужно подгружать на весь размер кнопки при изменении размера.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17