Accueil > Forum > > > > PB pour dessiner sur un Canvas je séche...
PB pour dessiner sur un Canvas je séche...
mardi 29 août 2006 à 14:41:19 |
PB pour dessiner sur un Canvas je séche...

ffert
|
Bonjour
Voilà un des Bug les plus incompréhensible que j'ai rencontré.... :
J'ai un Panel contenant un TImage.
Le Panel est en "Visible := False" à l'ouverture de l'application.
- quand je clicke sur un bouton :
je redimensionne et affiche le Tpanel ,
puis je redimensionne et dessine dans le Timage.
J'obtiens alors au moment d'accéder au Canvas de l'image un message me disant : EOutOfRessource "Paramètre Incorrect"... !!!!
Alors que j'accède bien à mon Timage pour le redimensionner par exemple.
Si j'essaie d'accéder à une image en dehors du panel : aucune erreur.
Si je rajoute un nouveau composant Timage dans mon panel : de nouveau l'erreur lorsque j'exécute une commande sur le Canvas.
Je n'y comprends plus rien. Ou alors j'ai pas assez dormis ces derniers jours et j'ai l'esprit embrumé !!!
Please... help !!!!!... Fabien FERT [:)]
www.sigmadia.fr.fm
|
|
mardi 29 août 2006 à 15:09:56 |
Re : PB pour dessiner sur un Canvas je séche...

ffert
|
Bon j'ai continué les tests... et apparement ça vient de la taille de l'image... qui est trop importante.
Mais ce qui me surprends c'est que sur un autre PC... cela marche trés bien... pour cette grande taille.....
Fabien FERT [:)]
www.sigmadia.fr.fm
|
|
mardi 29 août 2006 à 15:34:41 |
Re : PB pour dessiner sur un Canvas je séche...

Matt 261
|
Salut, peut-être que je me trompe mais le pc sur lequel tu a essayé n'a-til pas plus de mémoire vive que le tient car on a déjà eu cette question me semble - til et il n'y avait pas assez de Ram. @+ Matt La paresse est la mère du génie... http://www.delphilab.com
|
|
mardi 29 août 2006 à 17:48:21 |
Re : PB pour dessiner sur un Canvas je séche...

f0xi
|
sans le code on peu pas t'aider. mais si tu redimensionne le TImage il faut : 1) redimensionner le bitmap 2) dessiner dans le canvas du bitmap Panel1.width := 640; Panel1.Height := 480; Image1.Align := AlClient; with Image1.Picture.Bitmap do begin width := Image1.width; height := image1.height; pixelFormat := pf24bit; with Canvas do begin Brush.Color := clBlack; FillRect(Image1.ClientRect); end; end;
et quand on a juste besoin d'un canvas pour dessiner on utiliser PaintBox et non TImage.
Croc (click me)
|
|
mardi 29 août 2006 à 20:31:34 |
Re : PB pour dessiner sur un Canvas je séche...

ffert
|
Merci pour vos réponses...
J'ai essayé la PaintBox qui effectivement me donne satisfaction pour la rapidité.
Mais si je met la paintbox dans une scrollbox.....
et que je déplace les ascenseurs.... le contenu de la paintbox
s'efface, il n'y a aucun refresh... (chose qui était géré en
automatique par le Timage)... et comme je ne sais pas comment
intercepter l'évènement de déplacement des ascenseur... je ne vois pas
comment forcer un refresh........
vue que je n'ai jamais utilisé de PaintBox, ai-je omis un élément, une
propriétés, ou quelque chose qui permette de conserver cette
fonctionnalité.
Merci...
Fabien FERT [:)]
www.sigmadia.fr.fm
|
|
mercredi 30 août 2006 à 00:38:39 |
Re : PB pour dessiner sur un Canvas je séche...

Forman
|
Il faut repeindre l'image sur le Canvas de la PaintBox à chaque fois que son événement OnPaint est appelé, pas seulement afficher le bitmap une seule fois au début. Et il peut être utile d'utiliser les propriétés Tracking=True et Smooth=True de la HorzScrollBar et VertScrollBar de la ScrollBox (de façon à ce que le réaffichage se fasse aussi pendant le tracking, pas seulement quand l'utilisateur relâche la souris).
|
|
mercredi 30 août 2006 à 15:42:41 |
Re : PB pour dessiner sur un Canvas je séche...

ffert
|
désolé Forman... ceci
ne fonctionne pas... car si tu redessine l'image sur un OnPaint.. tu
crées un comportement récursif dans lequel il redessine en permanence...
et comme on ne peux pas capturer l'évènement de mouvement des ascenseur dans une scrollBox...
Je me suis dit, il ne reste qu'a enlever la scrollbox et mettre un
TscrollBar et gérer le rafraichissement sur l'évenement OnScroll (ou On
change)....
L'image est bien redessinée mais elle disparait tout de suite... en
fait elle n'apparait plus dés qu'on arrête de déplacer le scroll !!!
est-ce que ça vient du Panel ?? qui contient la PaintBox ?
La structure est :
TFrom
-> TPanel
-> TPageControl
-> TTabSheet
-> TPanel
-> TPaintBox
Est-ce que c'est ça qui m'efface le contenu de la PaintBox ???
Merci d'avance.. car la je calle... Fabien FERT [:)]
www.sigmadia.fr.fm
|
|
mercredi 30 août 2006 à 16:54:33 |
Re : PB pour dessiner sur un Canvas je séche...

Forman
|
C'est bizarre, je l'ai déjà fait des 10aines de fois avec le OnPaint et ça marche très bien... Qu'est-ce que tu entends par "récursif"? L'événement OnPaint est appelé par Windows lorsqu'une fenêtre (ou sous-fenêtre) a besoin d'être redessinée (c'est par exemple le cas d'une fenêtre enfant lorsque le parent a reçu un message de scrolling). J'ai même un source où j'utilise ça avec 3 paintbox: http://www.delphifr.com/codes/BINARISATION-IMAGES_39294.aspx et ça fonctionne sans problème. De plus, ça n'a normallement rien à voir avec le nombre de contrôles utilisés (si toutefois ceux-ci sont bien programmés).
Au fait, je ne vois par où est la scrollbox dans l'arborescence de tes contrôles...
|
|
mercredi 30 août 2006 à 17:18:27 |
Re : PB pour dessiner sur un Canvas je séche...

ffert
|
oui j'ai supprimé la scroll box car ça ne me permettait pas d'intercepté les déplacement des ascenseurs... donc...
j'ai juste mis un TScrollBar dessous ma PaintBox. et je redessine les
éléments de ma PaintBox sur l'evenement onScroll... en plus il semble
que ce soit plus fluide que de mettre le PaintBox dans une ScrollBox.
Par contre, fait étrange : l'ensemble des éléments de mon TPanel (celui
qui est juste sur le Form), clignotent lors du déplacement de ma
scrollbar (les autres panel en dessous, les boutons, etc.... enfin tout
ce qui est en dessous de ce panel)... alors que les panel à coté
restent fixe eux !!!!
ça aussi c'est étrange....
Fabien FERT [:)]
www.sigmadia.fr.fm
|
|
jeudi 31 août 2006 à 16:17:12 |
Re : PB pour dessiner sur un Canvas je séche...

f0xi
|
si les panel clignotent : Form1.DoubleBuffered := true; PanelX.DoubleBuffered := true;
procedure TForm1.FormCreate(Sender: TObject); begin ScrollBox1.HorzScrollBar.Tracking := true; ScrollBox1.VertScrollBar.Tracking := true; ScrollBox1.DoubleBuffered := true; end;
procedure TForm1.PaintBox1Paint(Sender: TObject); var i,X,Y : integer; begin with PaintBox1.Canvas do begin Brush.Color := clWhite; FillRect(PaintBox1.ClientRect); for i := 0 to 999 do begin Pen.Color := Random($FFFFFF); x := random(PaintBox1.Width); y := random(PaintBox1.Height); MoveTo(X,Y); x := random(PaintBox1.Width); y := random(PaintBox1.Height); LineTo(X,Y); end; end; end;
procedure TForm1.FormPaint(Sender: TObject); begin PaintBox1.Refresh; end;
Croc (click me)
|
|
Cette discussion est classée dans : pb, panel, dessiner, timage, canvas
Répondre à ce message
Sujets en rapport avec ce message
Problème agrandissement du canvas d'une TImage [ par Zitoune34 ]
BjrJe dessine sur le canvas d'un TImage. Le probleme c'est que la taille du canvas dépend de la taille du TImage à la création, du coup lorsque je red
effacer un graphique [ par gorneaue ]
J'utilise le composant TImage pour dessiner la courbe d'une fonction.Je ne sais pas si c'est le composant adequat, mais je n'ai trouve que celui-ci :(
panel en canvas? [ par lupoo ]
salut à tous,g un prog qui dessine une ligne elastique sur la Form, avec deux cliques de la souris, mais lorsque je rajoute un Panel, les cliques ne f
TImage + Texte encore [ par louiwahl ]
Bjr voila dans mon composant bouton deriver de TImage j'ai mis la proprietee Caption que je voudrais voire afficher sur mon bouton a la creation de c
Pb Référence With [ par Jean_Jean ]
Bonjour à tous,Voilà, j'ai trouvé une bizarerie avec le référencement de With. Bien que j'ai contourné le problème en n'utilisant pas cette instructio
Strechdraw d'un Bitmap dans un TImage [ par Tank01 ]
Bonjour à tous !!Je me trouve face a un chti problème !!J'écris différents textes ( avec textout ) sur un TBitmap (Bitmap1)Ce bitmap possède des dimen
Dessiner sur un TImage dans un TTabSheet [ par glt0732 ]
Pour dessiner dans un TImage la technique la plus simple reste :Image1.Canvas.MoveTo(50,50);Image1.Canvas.LineTo(50,100);Ok ! jusque la il n'y a pas d
Affichage des composants et de leur fils [ par anisb ]
Salut tout le monde,Voilà je suis débutant en Delphi et j'ai forcément un petit probleme...J'ai une classe qui dérive de TCustomPanel dans lequel la r
Pb Canvas.Draw [ par MathU Zalem ]
Salut à tous,J'ai un pb probablement simple, mais je ne trouve pas la réponse. Dans le cadre d'un petit projet (editeur d'icône), j'ai voulu afficher
TImageList, TImage et Transparence [ par JulioDelphi ]
Bonsoir, J'ai un soucis de transparence, voila le bazar : Je pose une TImage, je vais peindre dessus grace au .Canvas Je pose un TImageList. Elle co
Livres en rapport
|
Derniers Blogs
[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : DELPHIRE : DELPHI par overtaker
Cliquez pour lire la suite par overtaker RE : DELPHIRE : DELPHI par rt15
Cliquez pour lire la suite par rt15
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|