FreeBasic
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

Графика в Windows

Участников: 2

Перейти вниз

Графика в Windows Empty Графика в Windows

Сообщение  justar Пт Авг 24, 2012 3:36 pm

У оператора SCREEN есть параметр flags, одно из его значений -1 описано в хэлпе следующим образом:

It creates a graphics buffer but not a window. User must implement the window, the events manager and and refresh screen as needed. This mode allows to mix FreeBASIC drawing functions with API-driven windows. This flag overrides all other mode flags
А вот что об этом флаге написано здесь: http://freebasic-world.narod.ru/graphic1.html

режим, позволяющий рисовать совместно с GDI функциями API на обычном Windows окне. При этом экран , установленный с помощью Screen и ScreenRes , не отображается.
Означает ли это, что при использовании flags = -1 можно рисовать стандартными графическими операторами Fb на окнах Windows? Или это я неправильно понял?

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 49
Откуда : Кишинёв, Республика Молдоа

Вернуться к началу Перейти вниз

Графика в Windows Empty Re: Графика в Windows

Сообщение  trew Пт Авг 24, 2012 4:48 pm

justar пишет:У оператора SCREEN есть параметр flags, одно из его значений -1 описано в хэлпе следующим образом:

It creates a graphics buffer but not a window. User must implement the window, the events manager and and refresh screen as needed. This mode allows to mix FreeBASIC drawing functions with API-driven windows. This flag overrides all other mode flags
А вот что об этом флаге написано здесь: http://freebasic-world.narod.ru/graphic1.html

режим, позволяющий рисовать совместно с GDI функциями API на обычном Windows окне. При этом экран , установленный с помощью Screen и ScreenRes , не отображается.
Означает ли это, что при использовании flags = -1 можно рисовать стандартными графическими операторами Fb на окнах Windows? Или это я неправильно понял?

Этот код прольет свет:

Код:
#include "fbgfx.bi"
#include "window9.bi"

dim shared as HWND g_hwndODS
dim shared as RECT g_rcODS
Dim shared as BITMAPV4HEADER bmi
Dim As HWND hWnd ,hwnd1
Dim Shared As Integer event,i
Dim Shared As hdc hdc
Dim Shared As hbitmap hbmp,hbmp1
'==============================================================================
Sub tt(param As Any Ptr)
   Do
      line (i,i)-(299-i,299-i),rgb(0,0,0),bf
      line (299-i,0)-(i,299),rgb(0,0,255)
      line (i,0)-(299-i,299),rgb(0,0,255)
      i += 1
      i mod=300
      with g_rcODS
         StretchDIBits( hDC, _
         0, _
         0, _
         .right - .left + 1, _
         .bottom - .top, _
         0, _
         0, _
         .right - .left + 1, _
         .bottom - .top, _
         ScreenPtr, _
         CPtr( BITMAPINFO ptr, @bmi), _
         DIB_RGB_COLORS, SRCCOPY )
      End With
      Sleep(5)
   Loop
End Sub


hwnd=OpenWindow("",10,10,500,500) : CenterWindow(hwnd)
g_hwndODS=ImageGadget(1,10,10,300,300)
GetClientRect(g_hwndODS , @g_rcODS )
hdc=GetDC(g_hwndODS)
With bmi
   .bV4Size = len(BITMAPV4HEADER)
   .bv4width = g_rcODS.right+1
   .bv4height = -(g_rcODS.bottom+1)
   .bv4planes = 1
   .bv4bitcount = 32
   .bv4v4compression = 0
   .bv4sizeimage = (g_rcODS.right+1) * (g_rcODS.bottom+1) * 4
   .bV4RedMask = &h0f00
   .bV4GreenMask = &h00f0
   .bV4BlueMask = &h000f
   .bV4AlphaMask = &hf000
end with

ScreenRes g_rcODS.right+1, g_rcODS.bottom+1, 32, 1, FB.GFX_NULL
ThreadCreate(@tt)
Do
   event=WaitEvent()
   If event=EventClose Then
      End
   EndIf
Loop
DeleteDC(hdc)

trew

Сообщения : 331
Дата регистрации : 2010-10-14

Вернуться к началу Перейти вниз

Графика в Windows Empty Re: Графика в Windows

Сообщение  justar Пт Авг 24, 2012 5:22 pm

trew пишет:
Этот код прольет свет:
Спасибо. Буду разбираться на досуге...

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 49
Откуда : Кишинёв, Республика Молдоа

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения