![]() |
GDI+ & LoadFromResource Marke Eigenbau machts nicht
Hi,
ich verstehe es nicht, eigentlich funktioniert es anscheinend da sich der Puffer mit dem ich das zu ladende Bild mit korr. Werten füllt... Ich verwende für meine nonVCL Prg's eine modifiz. Variante der GDI-Plus Units für Delphi ( ![]() einer Resource erzeugen zu können folgende Procedure hinzugefügt:
Delphi-Quellcode:
Als Fhehlerstatus bekomme ich von der GDI-Plus einen "Win32Error". Wer kann ein wenig helfen ?
// ... //
Warum so kompliziert wenn es auch eifach geht... >>-> ![]() |
Re: GDI+ & LoadFromResource Marke Eigenbau machts nicht
Hallo,
ich verwende da immer den Umweg über einen TMemoryStream:
Delphi-Quellcode:
Gruß
function LoadFromResource(const AResName: WideString;
AInstance: LongWord): TMemoryStream; var HR, HRI, ResSize: Cardinal; Stream: TMemoryStream; begin Stream := nil; HRI := FindResourceW(AInstance, PWideChar(AResName), PWideChar(RT_RCDATA)); if HRI <> 0 then begin HR := LoadResource(AInstance, HRI); if HR <> 0 then begin ResSize := SizeOfResource(AInstance, HRI); Stream := TMemoryStream.Create; Stream.Write(LockResource(HR)^, ResSize); Stream.Position := 0; end; end; Result := Stream; end; function LoadImageFromResource(const AResName: WideString; AInstance: LongWord): TGPImage; var Image: TGPimage; Stream: TMemoryStream; SA: TStreamAdapter; begin Image := nil; Stream := LoadFromResource(AResName, AInstance); if Assigned(Stream) then begin SA := TStreamAdapter.Create(Stream, soOwned); Image := TGPImage.Create(SA); end; Result := Image; end; xaromz |
Re: GDI+ & LoadFromResource Marke Eigenbau machts nicht
Zitat:
:mrgreen: Ich habe kein TMemoryStream oder TStreamAdapter zur Verfügung. :stupid: |
Re: GDI+ & LoadFromResource Marke Eigenbau machts nicht
Hallo,
stimmt, da steht ja was von NonVCL :wall: . Gruß xaromz |
Re: GDI+ & LoadFromResource Marke Eigenbau machts nicht
Hallo,
so, ich habe Deinen Constructor mal in eine Funktion verpackt und den FindResource-Aufruf auf WideChars geändert. Bei mir funktioniert das:
Delphi-Quellcode:
Gruß
function CreateFromResource(Instance: HMODULE;
const bitmapName: WideString): TGPBitmap; var hResource: HRSRC; imageSize: DWORD; hResData: DWORD; pResourceData: Pointer; hBuffer: DWORD; pBuffer: Pointer; pStream: IStream; begin Result := nil; hResource := FindResourceW(hInstance, PWideChar(bitmapName), PWideChar(RT_RCDATA)); imageSize := SizeofResource(hInstance, hResource); hResData := LoadResource(hInstance, hResource); pResourceData := LockResource(hResData); hBuffer := GlobalAlloc(GMEM_MOVEABLE, imageSize); pBuffer := GlobalLock(hBuffer); CopyMemory(pBuffer, pResourceData, imageSize); pStream := nil; if CreateStreamOnHGlobal(hBuffer, FALSE, pStream) = S_OK then Result := TGPBitmap.Create(pStream); GlobalUnlock(hBuffer); GlobalFree(hBuffer); UnlockResource(hResData); end; xaromz |
Re: GDI+ & LoadFromResource Marke Eigenbau machts nicht
Danke xaromz für deine Mühe. :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz