Decouper une picture box

stephkaiser Messages postés 6 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 2 mai 2005 - 18 avril 2005 à 16:08
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 30 juin 2005 à 22:35
J'aimerais pouvoir decouper une image dans une picturebox . Faire un genre de maillage et pouvoir traiter chaqe petit bout d'image.
Est ce possible de faire ceci et si oui comment.
Merci j'attend des reponces avec impatience

13 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 avril 2005 à 17:14
Utilise soit la fonction PaintPicture de VB, soit passe par la fonction BitBlt de l'API Windows.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgotoP.com/popapi/
0
cs_Jackboy Messages postés 757 Date d'inscription vendredi 7 septembre 2001 Statut Membre Dernière intervention 19 juin 2008
18 avril 2005 à 19:17
salut !

héhé les grands esprit ce rencontre (question sur le forum qui te précède) !!

A tu réussi a faire qqchose avec cette suggestion, je vérifie de mon cote et si je reussi a faire qqchose je te fait signe ?
0
stephkaiser Messages postés 6 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 2 mai 2005
19 avril 2005 à 08:23
Oh excusez moi les gard. J'ai oublier de vous preciser que je travaille sous Visual Basic.Net .
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 juin 2005 à 12:28
bonjour,
j'ai apparemment les même besoins que vous. la solution que DarkSidious a donné est fonctionnelle et rapide, mais ne fonctionne que pour une PictureBox en résultat.

API : BitBlt PIC_TEMP.hDC, 0, 0, 50, 50, PIC_ALL.hDC, 0, 0, SRCCOPY
(SRCCOPY=&HCC0020 en constante)

PAINT : PIC_TEMP.PaintPicture PIC_ALL, 0, 0, PIC_ALL.Width, PIC_ALL.Height, _
50, 50, PIC_ALL.Width, PIC_ALL.Height

quelqu'un a une idée pour que le résultat arrive directement dans une Image? (qui ne contient donc pas de hDC) et en peu de lignes? (et pas de : "bah tu fais IMG_TEMP.Picture = PIC_TEMP.Image" )

PCPT
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 juin 2005 à 12:38
Ben là, comme tu passe par les API windows, ca ne marche qu'avec les contrôles possèdant un hDC.



Pour le contrôle Image, tu ne peux sûrement pas le faire vu que c'est un contrôle static !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 juin 2005 à 13:06
en fait, si, on peut. je cherche depuis hier, je viens de terminer à la seconde. j'en ferais une mini source aujourd'hui ou demain, çà servira sans doute à plus d'un. le problème est que çà fait beacoup de lignes et d'appels d'API pour pas grand chose, c'est çà qui m'embête!

voici le lien miraculeux : http://www.mentalis.org/apilist/64251A6CC4AC18DEC4B9CA62DE2A43A5.html

tiens-moi tout de même au courant si tu trouves plus simple, çà m'interesse (même si le temps d'execution et les ressources utilisées me conviennent avec ce module )

(et merci d'avoir donné suite si rapidement)
PCPT
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 juin 2005 à 13:29
Ah oui, c'est vrai qu'en convertissant l'image en bitmap VB, on peux faire cà, c'est assez fastidieux, mais ca doit marcher.



Non, je ne vois pas trop comment on peut faire plus simple (déjà que je pensais même pas à passer par un hBitmap ! lol)

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 juin 2005 à 13:32
arf, j'ai peut-être parlé trop vite.
çà fonctionne bien pour les petites images (donc parfait pour moi) mais à plus grande échelle, c'est pas une solution fiable, il y a un gros décalage dans la reconnaissance de zones, et comme le résultat n'est pas par rapport à la picture mais à sa position sur l'écran, je me retrouve avec un morceau de la barre des tâches (par exemple) en résultat.

@ travailler, je tiendrais les lecteurs au courant
PCPT
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 juin 2005 à 13:37
en fait, mon utilisation est toujours pour mon foutu OCX dont on a déjà parlé (je crois). ma skin est générée morceau par morceau, mais comme je compte encore la couper (pour avoir des formes encore plus diverses), je voulais regrouper la création des boutons (3 états) dans la même bmp, et la découper ensuite. (plus facile à créer, et moins fastidieux pour les adèptes de Paint )

et le peu que j'ai lu sur les régions, çà ne me convient pas. à moins que tu aies une solution ou un exemple simple? (j'ai besoin des résultats dans des Images, pas des Pictures, comme tu t'en doutes)

en l'attente,
PCPT
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 juin 2005 à 13:51
Attention, avec cette source, tu te base sur le DC 0, c'est à dire,
l'écran, donc les coordonnées sont des coordonnées Ecran et pas des
coordonnées clientes !



Si tu veux des coordonnées clientes, utilise la fonction de l'API ScreenToClient.


Le fait de regrouper les images dans un même fichier est pas forcément
plus pratique pour l'utilisateur, par contre, ca complique et ca
ralentit pas mal l'utilisation (puisque tu es obligé de travailler sur
l'image avant de l'afficher !).


DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 juin 2005 à 14:12
umm, étrange :
sur écran 19" en 1280*1024 = ok, c'est bon pour toutes les images, tant que la pic est visible (donc çà n'ira pas pour l'OCX, puisque pas encore visible à l'écran, mais bref)
et testé sur écran 17" en 1024*768, nikel aussi....
(donc étrange pour ScreenToClient non-utilisé ; sans bug)

quoi qu'il en soit, le fait qu'il faille l'affichage avant, çà ne me convient pas :-\

pour le fait de "compliquer volontairement", c'est un compromis réfléchi. mes skins contiennent pour le moment déjà plus de 25 images, et c'est loin d'être terminé. donc je voudrais, à faible ralentissement, regrouper au moins les états des images commandes (agrandir, réduire, ...) dan une même image. pour la création de la skin, c'est plus pratique. (c-a-d "réduire up down focus" ensemble, etc...)

les autres skins, ou même juste les petites appli qui utilisent des boutons séparés, mais dans la même bmp, utilisent les régions? tu peux m'informer ou me redirigé à ce niveau?

merci
PCPT
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 juin 2005 à 14:43
Alors, pour ton problème d'affichage, il te suffit d'utiliser un autre
DC que le DC 0 pour éviter ce problème : charge ton image dans un DC
temporaire (un picturebox par exemple), et utilise le en lieux et place
du DC 0.



Pour un système de skins, en effet, c'est des régions qui sont
utilisées. Les régions consiste à "découper" une feuille de la forme
voulue (généralement, il s'agit d'images avec une couleur de
transparence). Le plus important pour c'est application, c'est la
rapidité de traitement : si l'interface devient trop lourde,
l'application devient vite inutilisable.



Il faut essayer de ne pas utiliser de trop grosses images aussi pour ne pas à avoir à traîter trop de pixels.



Je te conseille de regarder ma source de gestion d'image, et celle de découpage rapide de feuille, ca peut t'aiguiller déjà.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 juin 2005 à 22:35
j'ai regardé tes sources (conseillées), elles ne me sont malheureusement d'aucun secours.

je n'ai pas encore regardé pour le DC par contre, je verrais çà plus tard dans la nuit.
pour les régions, c'est bien ce que j'en pensais, et c'est donc pourquoi je me suis écarté de cette voie. en effet, je n'ai pas besoin de "couper" la forme, mais juste de superposer des images dessus.

si tu veux, j'ai zippé l'exemple dont on parlait cet après-midi : (vb6, projet 9Ko)
http://vrac-perso.site.voila.fr/4boutons.zip

il fonctionne tant que rien ne gène la visibilité de PIC_ALL (droite). il est fourni avec le type d'exemple dont j'ai besoin, mais je l'ai réajusté en me basant sur une image de 510*431.
le résultat est immédiat.
je voudrais néanmoins une solution plus courte, et sans passer par une PIC intermédiaire.

tiens, tant qu'on y est, sais tu comment reproduire une image plusieurs fois sur son axe, dans une IMAGE (toujours). donc pas étirer, mais dupliquer en fait, dans l'image....

en l'attente

PCPT
0
Rejoignez-nous