Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
853 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  C++ builder Firemonkey créer une Image avec Bitmap

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C++ builder Firemonkey créer une Image avec Bitmap

n°2306106
magdani
Posté le 28-09-2017 à 09:46:18  profilanswer
 


Bonjour,
 
J'utilise C++ builder starter Firemonkey et j'essaye de créer une Image avec un Bitmap
 
Mon code :
 
Fichier Jeu.cpp
 
//---------------------------------------------------------------------------
 
#include <fmx.h>
 
#pragma hdrstop
 
#include "Jeu.h"
 
#include <string>
 
//---------------------------------------------------------------------------
 
#pragma package(smart_init)
 
#pragma resource "*.fmx"
 
TForm1 *Form1;
 
TBitmap *MyBitmap; // création d'un Bitmap nommé MyBitmap
 
TImage *NewImage; // création d'un Image nommées NewImage
 
using namespace std;
 
void __fastcall TForm1::Button1Click(TObject *Sender)
 
{
 
Glyph1->ImageIndex =8; // j'ai mis dans le composant Glyph la liste d'images de ImageList1
 
en nommant la propriété Images de Glyph ImageList1
 
MyBitmap = new TBitmap(0,0);
 
MyBitmap->Assign(Glyph1->MakeScreenshot()); // récupère le Bitmap
 
Image1->Bitmap = MyBitmap; // le Bitmap s'affiche bien dans Image1, ça marche
 
// J'aimerais faire pareil avec un Timage et afficher l'image sur l'écran
 
NewImage = new Timage; // cette ligne provoque l'erreur ci-dessous (*)
 
NewImage->Bitmap = MyBitmap;
 
NewImage->Height = 115;
 
NewImage->Width = 80;
 
NewImage->Position->X = 100;
 
NewImage->Position->Y = 100;
 
}
 
(*) - [bcc32 Avertissement] W8123 Le chemin 'C:\Users\Public\Documents\Embarcadero\Studio\18.0\hpp\Win32' est introuvable - chemin ignoré dans l'option '-I'
 
- [bcc32 Erreur] Jeu.cpp(76): E2285 Impossible de trouver une correspondance pour 'TImage::TImage()'
 
- [bcc32 Avertissement] Jeu.cpp(118): W8111 Accès à l'entité 'Graphics::bkSolid' désapprouvée
 
Si je retire cette ligne et que je clique sur Button1, ce message d'erreur apparaît : violation d'accès à l'adresse 00CFD81E dans le module 'fmx240.bpl' Lecture de l'adresse 00000228
 
Si quelqu'un peut m'aider … Merci d'avance

mood
Publicité
Posté le 28-09-2017 à 09:46:18  profilanswer
 

n°2306186
Farian
Posté le 29-09-2017 à 16:55:46  profilanswer
 

Bonjour !
 
Tout d'abord, merci de bien vouloir indenter votre code et d'utiliser les balises [code] pour le présenter ...
 
Pour votre problème :
 - Cela plante si vous enlevez la ligne : tout à fait normal, vous définissez un pointeur vers un objet, ne lui assignez pas de valeur et utilisez un attribut dudit objet. Le pointeur vaut ce qu'il y avait en mémoire au moment où vous avez lancé, probablement 0, mais cela peut aussi bien valoir 0x3A7C5209. Et quand vous essayez d'utiliser cette adresse, vous avez une violation d'accès car c'est une zone mémoire à laquelle vous n'avez pas accès => Tout à fait logique. Remarquez que cela aurait pu être pire, car cela aurait pu tomber dans une zone de mémoire à laquelle vous avez accès et cela aurait corrompu la mémoire et aurait sans doute donné, plus tard, des résultats imprévisibles ....
 - La ligne 76 ne compile pas car, comme l'indique le message d'erreur, le(s) constructeur(s) de la classe TImage demande(nt) des paramètres. Pour savoir lesquels, et, éventuellement, quel constructeur utiliser, reportez vous à la documentation de cette classe TImage.
 
Bonne continuation


---------------
On n'est jamais très fort pour ce calcul !
n°2306195
magdani
Posté le 29-09-2017 à 20:23:30  profilanswer
 

Merci Farian pour l'info. Bonne soirée

n°2306281
magdani
Posté le 02-10-2017 à 20:44:05  profilanswer
 

Bonsoir,
 
NewImage = new TImage(Form1); // j'ai mis le owner dans le constructeur de TImage
NewImage->Bitmap = MyBitmap;
 
Image2->Bitmap = NewImage->Bitmap;  
 
delete NewImage ...
 
Ce code fonctionne, le Bitmap est créé et s'affiche, mais il faut passer par Image2.
 
J'aimerais ne pas passer par un autre composant pour l'afficher en utilisant les propriétés suivantes :
 
NewImage->Height = 115;  
NewImage->Width = 80;
NewImage->Position->X = 100;
NewImage->Position->Y = 100;
 
Pas de message d'erreur avec ces lignes de code mais le Bitmap ne s'affiche pas.
 
Est-ce possible ?
 
Merci d'avance.

n°2306304
magdani
Posté le 03-10-2017 à 17:41:32  profilanswer
 

Voici la solution :
NewImage = new TImage(this); // this est Form1 à cause de TForm1::
NewImage->Parent = this; // idem
NewImage->Bitmap = MyBitmap;
NewImage->Height = 115;
NewImage->Width = 80;
NewImage->Position->X = 100;
NewImage->Position->Y = 100;


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  C++ builder Firemonkey créer une Image avec Bitmap

 

Sujets relatifs
Avec quoi créer mon Visual Novel?Créer une page sur Adobe Muse
Problème survol d’une imageDesassembler un programme linux (en C)
Créer une carte dynamiqueConception - Créer un document de conception accessible
[VBA/HTML] insérer une image dans un mailCréer un formlaire question/réponse
creer une liste deroulante sous flash cs4.Son au clic sur image
Plus de sujets relatifs à : C++ builder Firemonkey créer une Image avec Bitmap


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR