ZOOM Souris

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: ZOOM Souris

Message par Backup »

.............
Dernière modification par Backup le sam. 01/oct./2011 9:28, modifié 1 fois.
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Re: ZOOM Souris

Message par Atomo »

Ca marche exactement comme la fonction DrawAlphaImage() de la lib 2DDrawing.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: ZOOM Souris

Message par Backup »

je vois que tu as Reediter ton code
ok je test ;)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: ZOOM Souris

Message par Backup »

c'est bon ! :D

Merci pour ton code :)
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: ZOOM Souris

Message par blendman »

salut Attomo

ça m'a l'air super intéressant ton code :).

Avec un jpg, ça marche nickel.
Mais avec un png, j'ai 2 petits soucis :
- le canal alpha n'est pas conservé, ne sont conservés que les "extrêmes" (le blanc = 255, et le noir = 0)
- avec un png en 128*128, j'ai une erreur à la ligne :

Code : Tout sélectionner

 Color = *PixelArray\Pixel((py**PixelArray\Width)+px)
Array index out of bounds

Par contre, si je mets ça :

Code : Tout sélectionner

DrawAlphaClippedImage(@PixelArray, 0, 0, ImageWidth(image)/4, ImageHeight(image)/4, 0, 0, 400, 400, 255)
je n'ai plus d'erreur, je n'ai l'erreur que pour un w1 et un h1 différent de ce que j'ai mis.

Merci en tout cas pour ce code très intéressant ;).

EDIT :
-j'ai corrigé le 2ème soucis en ajoutant :

Code : Tout sélectionner

DrawingMode(#PB_2DDrawing_AlphaBlend)
  DrawAlphaClippedImage(@PixelArray, 0, 0, ImageWidth(image)/4, ImageHeight(image)/4, 0, 0, 400, 400, 255)
mais j'ai toujours le preimier bug si je change ImageWidth(image)/4, ImageHeight(image)/4
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Re: ZOOM Souris

Message par Atomo »

Il faut que la zone que tu clip à l'aide des paramètres x1, y1, w1, h1 soit dans les limites de l'image source.
Concernant le problème de transparence, tu peux me passer l'image qui pose problème pour voir ce que je peux faire ?
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: ZOOM Souris

Message par blendman »

Atomo a écrit :Il faut que la zone que tu clip à l'aide des paramètres x1, y1, w1, h1 soit dans les limites de l'image source.
sur une image avec alpha en 128*128, si je fais :

Code : Tout sélectionner

DrawAlphaClippedImage(@PixelArray, 0, 0, 64,64, 0, 0, 400, 400, 255) 
j'ai le bug, pourtant ça devrait marcher,non ?

que dois-je faire exactement ?
Concernant le problème de transparence, tu peux me passer l'image qui pose problème pour voir ce que je peux faire ?
en ajoutant DrawingMode(#PB_2DDrawing_AlphaBlend) je n'ai plus le soucis ;)
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Re: ZOOM Souris

Message par Atomo »

Ca devrait effectivement fonctionner, tu es sur un système 32 ou 64bits ?
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: ZOOM Souris

Message par blendman »

Atomo a écrit :Ca devrait effectivement fonctionner, tu es sur un système 32 ou 64bits ?
windows xp sp2, en 32 bits
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: ZOOM Souris

Message par kernadec »

bonjour
je viens de bricoler un zoom dans le genre Photo-Shop
mais sans mode alpha si quelqu'un a une solution...
je n'ai pas gérer les cas ou l'image trop grande laisse apparaitre du blanc
pour justement la décaler et recouvrir le blanc, pas le temps désolé..
pour le test clic gauche zoom + clic droit zoom -
ajout d'un test de dépassement taille < > image
Cordialement

Code : Tout sélectionner

;###############################################
;######## kernadec Zoom genre Photoshop       ##
;######## juillet 2011   pb440 et +           ##
;###############################################
#Echelle=250
Global Image_X.l,Image_Y.l,imagelg.l,imageht.l,a.l,b.l,mx.l,my.l,clic_delta.l,Zoom.l
imagelg=1200
imageht=1200
Image_X=0-200
Image_Y=0-200
OpenWindow(0,0, 0,600,600, "Zoom genre Photoshop kernadec",#WS_SYSMENU|#PB_Window_ScreenCentered  )
CreateImage(1,imagelg,imageht,32)                                                       ;image Temporaire

LoadImage(0, "c:\purebasic\examples\sources\data\Geebee2.bmp") 

ResizeImage(0,imagelg,imageht,#PB_Image_Smooth)
CopyImage(0,2)             
SetActiveWindow(0)
StartDrawing(WindowOutput(0))
DrawImage(ImageID(0),Image_X,Image_Y,imagelg,imageht)
StopDrawing()

Procedure dessin()
  ; kernadec procedure zoom genre photoshop 
  StartDrawing(WindowOutput(0))
  DrawingMode(1)
  Box(0,0,WindowWidth(0),WindowHeight(0),RGB(225,225,225))
  DrawingMode(4)
  If clic_delta<>0 
    Zoom=#Echelle*clic_delta 
  EndIf
  If (imagelg+Zoom)<0 Or (imageht+Zoom)<0
    CreateImage(1,100,100,32)
  ElseIf (imagelg+Zoom)>8000 Or (imageht+Zoom)>8000
    CreateImage(1,8000,8000,32)
  Else
    CreateImage(1,imagelg+Zoom,imageht+Zoom,32)                                           ;image temporaire pour calcul taille 
  EndIf 
  Image_X=(Image_X-(WindowWidth(0)/2))-(WindowMouseX(0)-WindowWidth(0))                 ;recentrage vue&zoom x souris  
  Image_Y=(Image_Y-(WindowHeight(0)/2))-(WindowMouseY(0)-WindowHeight(0))               ;recentrage vue&zoom y souris 
  DrawImage(ImageID(0),Image_X-(Zoom/2),Image_Y-(Zoom/2),ImageWidth(1),ImageHeight(1))  ;affiche image
  FreeImage(1)    
  StopDrawing()
EndProcedure

Repeat
  Event= WaitWindowEvent()
  Select event
    Case #PB_Event_Gadget
    Case #WM_LBUTTONDOWN 
      clic_delta=clic_delta+1
      mx=WindowMouseX(0)
      my=WindowMouseY(0)
      dessin()
    Case #WM_RBUTTONDOWN
      clic_delta=clic_delta-1
      mx=WindowMouseX(0)
      my=WindowMouseY(0)
      dessin()
    Case #WM_MOUSEMOVE
      mx=WindowMouseX(0)
      my=WindowMouseY(0)
    Case #WM_LBUTTONUP  
    Case #WM_RBUTTONUP     
  EndSelect  
Until Event= #PB_Event_CloseWindow
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Re: ZOOM Souris

Message par Atomo »

J'ai mis à jour le code en première page Blendman, tu peux me dire si tu as toujours le bug stp ?
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: ZOOM Souris

Message par blendman »

j'ai un bug ligne 34 :

Code : Tout sélectionner

 Color = *PixelsArray\Pixel((py**PixelsArray\Width)+px)
La variable *PixelsArray n'a pas de structure associée
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: ZOOM Souris

Message par kernadec »

bonjour
idem
Color = *PixelsArray\Pixel((py**PixelsArray\Width)+px)
ligne 34 la varible n'a pas de 'Structure' associée "pixelArray


ta version précédente n'avait pas cette erreur..

Cordialement
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Re: ZOOM Souris

Message par Atomo »

C'est corrigé, désolé.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: ZOOM Souris

Message par blendman »

Plus de bug, mais un problème à l'affichage ;)

L'image resizée présente des sortes de traits noirs :
Image

A gauche l'image originale, à gauche resizée en 1/8
Répondre