Charge bitmap à partir de fichier de ressources pour l'image
comment puis-je charger une image bmp de fichier de ressources et de le charger dans image1.De l'image? J'ai essayé ceci:
{$R resource.res}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
BitMap1 : TBitMap;
begin
BitMap1 := TBitMap.Create;
try
BitMap1.LoadFromResourceName(HInstance,'down');
Image1.Picture(BitMap1);
finally
BitMap1.Free;
end;
end;
mais ne fonctionne pas. Merci!
J'ai créé un fichier. rc:
DOWN BMP DOWN.BMP
et j'ai compilé avec brcc32.exe:
brcc32.exe resource.rc
J'ai mis en place la ressource:
{$R resource.res}
mais ne peut pas trouver le fichier bmp.
Il ne fonctionne pas, toujours une erreur, cependant j'ai trouvé un autre code:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Image1.Picture.Bitmap.Handle := LoadBitmap(hInstance, 'DOWN');
end;
Mais quand je clique sur l'image disparaît, pourquoi? Grâce
C'est le code:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan, ExtCtrls;
type
TForm1 = class(TForm)
XPManifest1: TXPManifest;
Image1: TImage;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R RESOURCE.RES}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Image1.Picture.Bitmap.Handle := LoadBitmap(hInstance,'DOWN');
end;
end.
- Ce qui ne fonctionne pas? Êtes-vous d'obtenir des messages d'erreur? Ne fait rien apparaitre?
- Une chose que je vois mal tout de suite est
Image1.Picture(BitMap1);
- Ne devrait-ce pas êtreImage1.Picture.Assign(BitMap1);
? - J'ai essayé: Image1.Image.Attribuer(BitMap1); mais j'obtiens une erreur: Ressource introuvable.
- Ensuite, tout ce que je peux dire, c'est assurez-vous que vous avez placé la ressource.
- La ressource est placé correctement
- il l'a fait.
{$R resource.res}
. - Veuillez vérifier que la ressource est en fait dans l'exécutable (dans une section bitmap) par un tiers des ressources de la visionneuse/compilateur..
- Une façon rapide et sale à vérifier est de compiler avec ce que doit inclure l'image, vérifiez la taille du fichier, puis compilez à nouveau sans elle, et de comparer les tailles de fichier.
- Vous connaissez votre .fichier rc est mal, n'est-ce pas (BITMAP <> BMP)?
- Si je mets de l'image au lieu de BMP, le compilateur me donne une erreur: INVALID FORMAT BITMAP, donc je dois mettre BMP.
LoadBitmap
,LoadImage
avec IMAGE_BITMAP,FindResource
avec RT_BITMAP, ceux-ci vont tous chercher une BITMAP ressource. Si vous ne le mettez pas dans un 'bitmap' section, vous ne pouvez pas utiliserLoadFromResourceName
deTBitmap
. Croyez-moi!- Je l'ai résolu par la conversion du fichier bmp à la couleur de l'échelle. Merci à tous.
Vous devez vous connecter pour publier un commentaire.
Vous devez créer la ressource correctement en premier lieu. Exemple (générique Delphi, puisque vous n'avez pas spécifier une version) ci-dessous.
Fichier:
Resource.rc
(nom terrible, d'ailleurs, et un terrible nom de la ressource)Puis d'inclure le fichier dans le code par le compilateur à traiter:
Si votre version de Delphi ne prend pas en charge le ci-dessus
{$R }
directive, il suffit de retirer leresource.rc
partie, et la compilation de la ressource à partir d'une invite de commande dans le dossier de votre projet d'abord:Bmp.LoadFromResourceName(HInstance, 'bbabort');
dans un D2007 exécutable (ils ont un peu de bitmaps par défaut), puis dessiner l'image sur la forme de la toile sans problème.SomeResource
a échoué, le changer pourSOMERESOURCE
travaillé, sans autre modification). Il l'habitude d'être documenté dans le MSDN de ressource format de fichier, mais je n'ai pas vérifié dans les âges. Je vais voir si je peux la trouver, mais même si elle n'a pas d'importance le code ci-dessus correctement les charges de la ressource alors que la question d'origine du code n'a pas. 🙂bbabort
n'en fait maintenant. Je vais supprimer cette phrase. Merci pour la correction. 🙂En Delphi 10 ou plus tard, vous pouvez créer la ressource aller jusqu'à Menu Projet
Projet > des Ressources et des Images
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Resources_and_Images