begin process at 2010 02 10 11:39:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Mutimédia

 > 

Image & Vidéo

 > 

gliiser déplacer timage dans timage...possible?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

gliiser déplacer timage dans timage...possible?

samedi 30 mai 2009 à 08:50:17 | gliiser déplacer timage dans timage...possible?

sulliwane


Bonjour à tous,

tout est dans le titre :o)

J'ai un cadre Timage dans lequel je souhaiterais déplacer un autre Timage (drag and drop), cela est-il possible?


Mes essais ne sont pas vraiment concluant pour le moment...

J'ai autorisé le glisser/déplacer pour la forme contenant mon image à déplacer initiale.

J'ai autorisé le glisser/déplacer pour le timage destiné à recevoir mon image à déplacer.

Et j'ai dit que lorsque j'appuie sur l'image à déplacer: image-a-déplacer.begindrag(true);


Qu'en dites vous?

merci d'avance pour vos réponses, commentaires!

ps: first post :o)






samedi 30 mai 2009 à 09:17:29 | Re : gliiser déplacer timage dans timage...possible?

sulliwane

précision: voici l'erreur que j'obtiens lorsque j'essai de définir le image-a-deplacer.parent=timage

"unit1.pas(67,24) Error: Incompatible type for arg no. 1: Got "TImage", expected "TWinControl""

...alors que j'arrive très bien à déplacer l'image dans ma forme tform1....

faut il que je change le type de mon image à déplacer? (shape) ou plutôt le type de mon image à recevoir? (panel) 

Le problème est que je souhaite pouvoir dessiner sur ces objets des formes avec le pen.

Merci d'avance

dimanche 31 mai 2009 à 21:45:52 | Re : gliiser déplacer timage dans timage...possible?

Caribensila

Membre Club

Salut,

Pour servir de parent, un contrôle doit être une instance d'un descendant de TWinControl ce qui n'est pas le cas de TImage.

Tu places donc ton image de fond dans un TPanel aux mêmes dimensions.
L'image 'dragable' (Image2 dans le code ci-dessous) sur cette image de fond et :

var StartPoint : TPoint;

procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  begin
  StartPoint.X := X;
  StartPoint.Y := Y;
end;

procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  begin
  if ssLeft in Shift then begin //vérifie que le bouton gauche est enfoncé.
    Image2.Left := Image2.Left-(StartPoint.X-X); //Translation horizontale.
    Image2.Top := Image2.Top -(StartPoint.Y-Y); //Translation verticale.
    // Ici, tu peux ajuster la position de Image2 par rapport aux bords du TPanel, si tu veux...
  end;
end;

NB : Le TPanel n'est nécessaire que pour empêcher Image2 d'aller se balader partout sur la fiche... à voir selon tes besoins.

lundi 1 juin 2009 à 10:42:08 | Re : gliiser déplacer timage dans timage...possible?

sulliwane

génial, j'essaye ça tout de suite!!!

en fait j'utilisais la méthode dragover et dragdrop mais elles ne conviennent pas à mon problème (qui est plus graphique).

J'ai vu ta réponse pour mon autre post, c'est bizzare que ton image ne se dédouble pas!

Bref, je vais utiliser ta solution pour déplacer l'image sur le panel (à aucun moment tu ne précise image.parent:=panel  , cette méthode ne sert à rien?
autre question: lorsque je dessine sur panel pendant que l'image se trouve dessus, l'image aussi est recouverte par le dessin...est-ce normal? comment gérer la superposition des objet?

enfin, je pense qu'il faudra que je rafraichisse le fond d'écran sur lequel se balade mon image (voici un tuto , dailleurs au passage (je profite de ta présence :o) les premières explications de ce tuto montrent comment déplacer une image dans une boucle...cette méthode est très bizzare non? ne faut t-il pas utiliser un timer plutôt? car dans l'exemple du tuto, ce qui va déterminer la vitesse de déplacement du sprite sera la vitesse de calcul du processeur (effectuer la boucle i=0 to 50)
voilà, par contre la deuxieme partie semble donner une bonne méthode pour rafraichir le fond d'écran...)

Meric beaucoup pour ta réponse, mon problème s'en voit éclaircie (et mes idées par la même)

ps: c'est en fait dans le cadre d'un projet dans mon école: un rayon se ballade sur tpanel, et au contact des miroirs (mes timages)  ils se réfléchissent suivant la loi de descartes...l'objectif étant d'amener la rayon jusqu'à la sortie en déplacant les miroirs sur le tpanel.....:o)


lundi 1 juin 2009 à 17:04:51 | Re : gliiser déplacer timage dans timage...possible?

Caribensila

Membre Club

«

à aucun moment tu ne précises image.parent:=panel , cette méthode ne sert à rien? »

-
Le Panel est bien le parent des deux TImages dans cet exemple. Mais il ne sert à rien de le préciser car cela se fait automatiquement au Design-Time quand tu poses un compo sur un autre...

Le tuto dont tu donnes le lien me semble bien fait. Tu peux t'en inspirer.

Et tu as raison pour le Timer. Timer et PaintBox s'imposent ici. Une PaintBox est faite pour ça et autant prendre de bonnes habitudes dès le début.

Tu peux aussi étudier l'exemple de f0xi ICI, ainsi que ses explications pour utiliser une TPaintBox et l'effet du Timer.

Si j'ai bien compris le projet de ton école, tu vas devoir faire des rotations d'Images, non?
Il y a sur ce site des exemples très efficaces de rotations postés par Cirec. Fais une petite recherche...

Ce projet me semble bien intéressant. Dommage que je doive m'absenter qq jours...

Bon courage!



Cette discussion est classée dans : possible, image, déplacer, timage, gliiser


Répondre à ce message

Sujets en rapport avec ce message

Comment déplacer un composant TImage avec la souris lors de l'éxecution de l'application???? [ par MasterNKZ ] Comment déplacer un composant TImage avec la souris lors de l'éxecution de l'application????J'ai une source pour déplacer un composant avec la souris, TImage problème [ par MasterNKZ ] Je veux faire une animation tres simple:j'ai une image dans un composant TImage et je la déplace a l'aide d'un timer 4 pixel par 4pixel tout les 70ms Problème avec les images et leur fond [ par fab30 ] Salut a tous, voilà, j'ai un probleme avec le Timage de Delphi : Sur ma forme, il y a un Timage avec une image de fond en bmp. Dessus, je rajoute un T Image avec ComboBoxEx [ par florenceb91 ] Bonjour,voilà, j'ai un ComboBoxEx qui me liste les images contenu dans une TImageList, et à chaque sélection d'image dans mon comboboxEx je souhaitera SavePictureDialog utilisation ? [ par g0belin ] Comment est ce que l'ont utilise le composant TSavePictureDialog.Si je veux enregistrer une image qui se trouve dans le TImage 1 ???------------------ Faire fonctionner TImage.Picture [ par timeplus ] Bonjour,J'affiche une image (.bmp) dans le fond d'une MDI mais je voudrais pouvoir changer de temps en temps cette image. La localisation (répertoire Timage [ par yvemoreau ] yvele problème: j'ai une image bitmap qui pèse 700k dans une Form j'ai encodé les Picture.Data dans un unit pour l retailler et copier une image sans utiliser TImage [ par skrol29 ] Bonjour,Je développe une mini visionneuse de fichier JPG en Delphi.En bas de l'image en cours, j'affiche une ribambelle horizontale qui contient toute ListImage et boucle [ par idaho69 ] petite explication de la situation :une image (jeu.bmp) contenant un jeu de cartes (54 cartes=52+le dos + face nue) le tout mis dans imagelist1L'on sa Drag Drop [ par Hnimsgern ] Le code suivant provient de l'héritage du composant Tbutton.le dragdrop ne fonctionne plus lorsque je rajoute un composant TImage et déclare son paren


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,326 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales