Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Czy ktos moze pomoc ?
Knight Lore''FC




Typ: neutral
Postów: 240
Zarejestrowany: Jan 2003
Czy ktos moze pomoc ?

Szukam osob od ktorych moglbym uzyskac odpowiedz na temat:

LoadImage,
GetObject,
CreateCompatibleDC,
SelectObject,
DeleteDC,
DeleteObject

Prosze nie pisac, ze to wszystko jest w API, bo to ja wiem, ale mam powazne problemy z uzywaniem tego...
Jezeli mam wykonac to 10 razy, to za kazdym razem zmniejsza mi sie ilosc wolnej pamieci, az nastepuje BUMMM ( Co ciekawe, to i tak wolnej pamieci mam jeszcze ponad 130MB ).

Nie wiem gdzie robie zle... ZAZNACZAM, ze wczytuje DUZE OBRAZKI ( 1772 x 2480 pix - 13MB )

Jest ktos chetny pomoc ? - Przesle program z kodem zrodlowym i wszystkimi potrzebnymi plikami - moze ktos znajdzie blad, bo ja mecze sie od 2 tygodni i kapituluje...

16-04-2005 00:07
Pokaż profil Knight Lore  Wyślij email do Knight Lore        1065423
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Z LoadImage nie korzystałem nigdy, wiec nie powiem więcej niż jest napisane w MSDN i Api-Guide.

GetObject
Pobiera informacje o wskazanym obiekcie.

Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long

hObject - uchwyt obiektu
nCount - rozmiar bufora, który odbierze dane
lpObject - bufor, do którego trafią dane

Np., żeby pobrać informacje o bitmapie będzie potrzebna struktura BITMAP:
Public Type BITMAP
    bmType As Long
    bmWidth As Long
    bmHeight As Long
    bmWidthBytes As Long
    bmPlanes As Integer
    bmBitsPixel As Integer
    bmBits As Long
End Type


Tworzymy sobie zmienną tego typu:
Dim bmpInfo As BITMAP
'i pobieramy do niej dane
Getobject hUchwytBitmapy, Len(bmpInfo), bmpInfo

W tym momencie w zmiennej bmpInfo pojawią się informacje o bitmapie.

Inne obiekty obsługiwane przez tą funkcję to:
Bitmapa (BITMAP)
DIB (DIBSECTION)
Paleta (Long - zwróci tylko ilość wpisów w palecie)
Pen (LOGPEN lub EXTLOGPEN, jeśli obiekt był tworzony przez ExtCreatePen)
Brush (LOGBRUSH)
Czcionka (LOGFONT)

Ja wolę używać nazwy GetGDIObject, żeby uniknąć nieporozumień (w VB jest już funkcja GetObject!)

CreateCompatibleDC
Tworzy DC zgodny z podanym.

Declare Function CreateCompatibleDC Lib "gdi32" Alias "CreateCompatibleDC" (ByVal hdc As Long) As Long

hdc - uchwyt do DC, na podstawie którego ma zostać stworzony nowy.

Zwraca uchwyt do nowego DC.

SelectObject
Przypisuje obiekt do DC.

Declare Function SelectObject Lib "gdi32" Alias "SelectObject" (ByVal hdc As Long, ByVal hObject As Long) As Long
hdc - uchwyt do DC
hObject - uchwyt przypisywanego obiektu

Obsługuje następujące obiekty:
Bitmapę
Brush
Czcionkę
Pen
Region

DeleteDC
Usuwa wybrany DC

Declare Function DeleteDC Lib "gdi32" Alias "DeleteDC" (ByVal hdc As Long) As Long

hdc - uwchwyt DC, który ma zostać usunięty.

Oczywiście po usunięciu nie można już z niego korzystać .

DeleteObject
Działa podobnie jak DeleteDC, tyle, że usuwa obiekty. Trzeba tylko pamiętać, że nie można kasować obiektówe, które są już przypisane do jakiegoś DC.

Dokładniejsze informacje w MSDN i Api-Guide.

Problem z pamięcią nie dotyczy całej pamięci komputera, tylko tej używanej przez twój program lub GDi (już nie pamietam które). Możesz to rozwiązać np. kasując bitmapy, gdy nie są już potrzebne (nigdy nie zostawiaj obiektów w pamięci).


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

16-04-2005 09:45
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Wszystkich odpowiedzi: 1 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1