что такое функция bitblt

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
BOO
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 126
Зарегистрирован: 06.09.2003 (Сб) 14:23
Откуда: Саратовская обл. г.Энгельс

что такое функция bitblt

Сообщение BOO » 20.10.2003 (Пн) 20:41

помогите плиз!

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 20.10.2003 (Пн) 22:53

BitBlt - аналог PaintPicture



API-Guide писал(а):Declaration
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (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


Description
The BitBlt function performs a bit-block transfer of the color data corresponding to a rectangle of pixels from the specified source device context into a destination device context.


Parameters
· hdcDest
Identifies the destination device context.

· nXDest
Specifies the logical x-coordinate of the upper-left corner of the destination rectangle.

· nYDest
Specifies the logical y-coordinate of the upper-left corner of the destination rectangle.

· nWidth
Specifies the logical width of the source and destination rectangles.

· nHeight
Specifies the logical height of the source and the destination rectangles.

· hdcSrc
Identifies the source device context.

· nXSrc
Specifies the logical x-coordinate of the upper-left corner of the source rectangle.

· nYSrc
Specifies the logical y-coordinate of the upper-left corner of the source rectangle.

· dwRop
Specifies a raster-operation code. These codes define how the color data for the source rectangle is to be combined with the color data for the destination rectangle to achieve the final color.
The following list shows some common raster operation codes:
BLACKNESS
Fills the destination rectangle using the color associated with index 0 in the physical palette. (This color is black for the default physical palette.)
DSTINVERT
Inverts the destination rectangle.
MERGECOPY
Merges the colors of the source rectangle with the specified pattern by using the Boolean AND operator.
MERGEPAINT
Merges the colors of the inverted source rectangle with the colors of the destination rectangle by using the Boolean OR operator.
NOTSRCCOPY
Copies the inverted source rectangle to the destination.
NOTSRCERASE
Combines the colors of the source and destination rectangles by using the Boolean OR operator and then inverts the resultant color.
PATCOPY
Copies the specified pattern into the destination bitmap.
PATINVERT
Combines the colors of the specified pattern with the colors of the destination rectangle by using the Boolean XOR operator.
PATPAINT
Combines the colors of the pattern with the colors of the inverted source rectangle by using the Boolean OR operator. The result of this operation is combined with the colors of the destination rectangle by using the Boolean OR operator.
SRCAND
Combines the colors of the source and destination rectangles by using the Boolean AND operator.
SRCCOPY
Copies the source rectangle directly to the destination rectangle.
SRCERASE
Combines the inverted colors of the destination rectangle with the colors of the source rectangle by using the Boolean AND operator.
SRCINVERT
Combines the colors of the source and destination rectangles by using the Boolean XOR operator.
SRCPAINT
Combines the colors of the source and destination rectangles by using the Boolean OR operator.
WHITENESS
Fills the destination rectangle using the color associated with index 1 in the physical palette. (This color is white for the default physical palette.)


Return Values
If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.




Sample
Код: Выделить всё
'used with fnWeight
Const FW_DONTCARE = 0
Const FW_THIN = 100
Const FW_EXTRALIGHT = 200
Const FW_LIGHT = 300
Const FW_NORMAL = 400
Const FW_MEDIUM = 500
Const FW_SEMIBOLD = 600
Const FW_BOLD = 700
Const FW_EXTRABOLD = 800
Const FW_HEAVY = 900
Const FW_BLACK = FW_HEAVY
Const FW_DEMIBOLD = FW_SEMIBOLD
Const FW_REGULAR = FW_NORMAL
Const FW_ULTRABOLD = FW_EXTRABOLD
Const FW_ULTRALIGHT = FW_EXTRALIGHT
'used with fdwCharSet
Const ANSI_CHARSET = 0
Const DEFAULT_CHARSET = 1
Const SYMBOL_CHARSET = 2
Const SHIFTJIS_CHARSET = 128
Const HANGEUL_CHARSET = 129
Const CHINESEBIG5_CHARSET = 136
Const OEM_CHARSET = 255
'used with fdwOutputPrecision
Const OUT_CHARACTER_PRECIS = 2
Const OUT_DEFAULT_PRECIS = 0
Const OUT_DEVICE_PRECIS = 5
'used with fdwClipPrecision
Const CLIP_DEFAULT_PRECIS = 0
Const CLIP_CHARACTER_PRECIS = 1
Const CLIP_STROKE_PRECIS = 2
'used with fdwQuality
Const DEFAULT_QUALITY = 0
Const DRAFT_QUALITY = 1
Const PROOF_QUALITY = 2
'used with fdwPitchAndFamily
Const DEFAULT_PITCH = 0
Const FIXED_PITCH = 1
Const VARIABLE_PITCH = 2
'used with SetBkMode
Const OPAQUE = 2
Const TRANSPARENT = 1

Const LOGPIXELSY = 90
Const COLOR_WINDOW = 5
Const Message = "Hello !"

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
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 CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal nHeight As Long, ByVal nWidth As Long, ByVal nEscapement As Long, ByVal nOrientation As Long, ByVal fnWeight As Long, ByVal fdwItalic As Boolean, ByVal fdwUnderline As Boolean, ByVal fdwStrikeOut As Boolean, ByVal fdwCharSet As Long, ByVal fdwOutputPrecision As Long, ByVal fdwClipPrecision As Long, ByVal fdwQuality As Long, ByVal fdwPitchAndFamily As Long, ByVal lpszFace As String) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function MulDiv Lib "kernel32" (ByVal nNumber As Long, ByVal nNumerator As Long, ByVal nDenominator As Long) As Long
Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
Private Declare Function GetSysColorBrush Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function FillRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Dim mDC As Long, mBitmap As Long
Private Sub Form_Click()
    Unload Me
End Sub
Private Sub Form_Load()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim mRGN As Long, Cnt As Long, mBrush As Long, R As RECT
    'Create a device context, compatible with the screen
    mDC = CreateCompatibleDC(GetDC(0))
    'Create a bitmap, compatible with the screen
    mBitmap = CreateCompatibleBitmap(GetDC(0), Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY)
    'Select the bitmap nito the device context
    SelectObject mDC, mBitmap
    'Set the bitmap's backmode to transparent
    SetBkMode mDC, TRANSPARENT
    'Set the rectangles' values
    SetRect R, 0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY
    'Fill the rect with the default window-color
    FillRect mDC, R, GetSysColorBrush(COLOR_WINDOW)

    For Cnt = 0 To 350 Step 30
        'Select the new font into the form's device context and delete the old font
        DeleteObject SelectObject(mDC, CreateMyFont(24, Cnt))
        'Print some text
        TextOut mDC, (Me.Width / Screen.TwipsPerPixelX) / 2, (Me.Height / Screen.TwipsPerPixelY) / 2, Message, Len(Message)
    Next Cnt

    'Create an elliptical region
    mRGN = CreateEllipticRgn(0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY)
    'Set the window region
    SetWindowRgn Me.hWnd, mRGN, True

    'delete our elliptical region
    DeleteObject mRGN
End Sub
Function CreateMyFont(nSize As Integer, nDegrees As Long) As Long
    'Create a specified font
    CreateMyFont = CreateFont(-MulDiv(nSize, GetDeviceCaps(GetDC(0), LOGPIXELSY), 72), 0, nDegrees * 10, 0, FW_NORMAL, False, False, False, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, "Times New Roman")
End Function
Private Sub Form_Paint()
    'Copy the picture to the form
    BitBlt Me.hdc, 0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY, mDC, 0, 0, vbSrcCopy
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'clean up
    DeleteDC mDC
    DeleteObject mBitmap
End Sub



Кажется, всё. 8)
Нет меня больше

Ducis
Бывалый
Бывалый
 
Сообщения: 232
Зарегистрирован: 24.04.2002 (Ср) 15:36

Сообщение Ducis » 21.10.2003 (Вт) 10:30

Или в переводе:

Функция BitBlt
Declare Function BitBlt Lib "gdi32" (ByVal hdcDest As Long, ByVal nXDest As Long, ByVal nYDest As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal dwRop As Long) As Long

Платформа
Windows 95/98: Поддерживается
Windows NT: Требуется Windows NT 3.1 или выше
Windows 2000: Поддерживается
Windows CE: Требуется Windows CE 1.0 или выше

BitBlt используется для выполнения операции копирования отдельных битов из области источника изображения в область-получатель.Функция позволяет передавать прямоугольную область из контекста устройства в контекст другого устройства. Размеры переданного прямоугольника совершенно сохраняются.

Возвращаемое значение
В случае ошибки функция возвращает 0 (Windows NT, 2000: используйте GetLastError для получения кода ошибки). В успешном случае функция возвращает значение отличное от нуля.

Параметры

hdcDest
Дескриптор контекста устройства устройства, которое получает переданный блок изображения.
nXDest
Координата x точки верхнего левого угла блока изображения(получатель).
nYDest
Координата y точки верхнего левого угла блока изображения(получатель).
nWidth
Ширина в пикселах блока изображения.
nHeight
Высота в пикселах блока изображения.
hdcSrc
Дескриптор к контексту устройства устройства, которое содержит блок изображения для копирования.
nXSrc
Координата x точки верхнего левого угла блока изображения(источник).
nYSrc
Координата y точки верхнего левого угла блока изображения(источник).
dwRop
Один из следующих флажков, идентифицирующих растровую операцию для передачи блока изображения. Каждая растровая операция использует RGB-значение цвета исходного исходного пиксела, чтобы определить новый цвет пиксела.
Const BLACKNESS = &H42
Заполняет область-получатель черным цветом.
Const CAPTUREBLT = &H40000000
Windows 98, 2000: Include any windows layered on top of the window being used in the resulting image.
Const DSTINVERT = &H550009
Инвертирует область-получатель.
Const MERGECOPY = &HC000CA
Изображение определяется результатом выполнения операции побитового AND над копируемым изображением или шаблоном.
Const MERGEPAINT = &HBB0226
Изображение определяется результатом выполнения операции побитового OR над инвертируемым копируемым и областью-получателем.
Const NOMIRRORBITMAP = &H80000000
Windows 98, 2000: Предотвращает точечный рисунок от зеркального отражения.
Const NOTSRCCOPY = &H330008
Изображение определяется инвертируемым исходным изображением.
Const NOTSRCERASE = &H1100A6
Комбинирование цвета и прямоугольников источника и получателя, использующих поразрядный оператор OR с последующим инвертированием результирующего цвета.
Const PATCOPY = &HF00021
Шаблон копируется в область получатель.
Const PATINVERT = &H5A0049
Комбинирование цвета указанного шаблона с цветами прямоугольника адресата, используя поразрядный оператор XOR.
Const PATPAINT = &HFB0A09
Комбинирование цвета указанного образца с цветами перевернутого исходного прямоугольника, используя поразрядный оператор OR. Комбинируйте результат той операции с цветами прямоугольника адресата, используя поразрядный оператор OR.
Const SRCAND = &H8800C6
Комбинирование цвета и прямоугольников источника иадресата, использующих поразрядный оператор AND.
Const SRCCOPY = &HCC0020
Копирование исходного прямоугольника непосредственно в прямоугольник адресата без изменений.
Const SRCERASE = &H440328
Комбинирование перевернутых цветов прямоугольника адресата с цветами источника , используя поразрядный оператор AND.
Const SRCINVERT = &H660046
Комбинирование цвета и прямоугольников источника и адресата, использующих поразрядный оператор XOR.
Const SRCPAINT = &HEE0086
Комбинирование цвета и прямоугольников источника и адресата, использующих поразрядный оператор OR.
Const WHITENESS = &HFF0062
Заполняет область-получатель белым цветом.

Пример

' Копируем изображение прямоугольника из формы Form1 в форму Form2
' используя SRCCOPY. Прямоугольник имеет ширину 100 и высоту
' 50. Верхний левый угол источника- (350, 250); копия расположится в координатах
' (0,0) формы Form2.
Dim retval As Long ' возвращаемое значение

' Переместим изображение точно как описано выше.
retval = BitBlt(Form2.hDC, 0, 0, 100, 50, Form1.hDC, 350, 250, SRCCOPY)

Схожие функции
StretchBlt
Понимаешь? (с)Б.Ельцин.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList