demander a la carte graphique qque chose

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
kelly
Messages : 176
Inscription : jeu. 09/sept./2004 16:15

demander a la carte graphique qque chose

Message par kelly »

On est sous PB, ok, mais n'y a t'il pas moyen d'envoyer a la carte graphique un mapping (une image d'une certaine largeur et hauteur) et de lui dire de l'afficher en "3d"; sous entendu de jouer sur les 3 axes de rotations ?
Une autre question mais plus "purebasic" : est il possible sur une image de ne travailler qu'avec la composante ROUGE par exemple ? (malgré que l'image comprenne aussi du V et du B)
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Je ne suis pas sur d'avoir bien compris la deuxième question mais je dirais en utilisant la commande red() ?
morukutsu
Messages : 65
Inscription : sam. 29/janv./2005 15:01
Contact :

Message par morukutsu »

Il y avait quelqu'un qui avait fait un code ou il y avait des virus R,G,B qui mangeaient seulement une composante de couleur de l'image . Il faut chercher le code sur le forum mais il doit pas etre bien loin ...
The life is a game...
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Sous windows, tu ne peux pas piloter "directement" la carte graphique. Il faut passer par une API. Tu as le choix entre DirectX et OpenGL. Purebasic gère "nativement" le DirectX 7.0. Par le biais de bibliothèques, ou en accédant aux fonctions systèmes, il peut gérer le reste. Tu as de nombreux exemples un peu partout, notamment sur CodeArchiv.
kelly
Messages : 176
Inscription : jeu. 09/sept./2004 16:15

Message par kelly »

morukutsu a écrit :Il y avait quelqu'un qui avait fait un code ou il y avait des virus R,G,B qui mangeaient seulement une composante de couleur de l'image . Il faut chercher le code sur le forum mais il doit pas etre bien loin ...
C'est moi qui a codé ca :lol:
kelly
Messages : 176
Inscription : jeu. 09/sept./2004 16:15

Message par kelly »

Pour la 2eme question, je veux par exemple faire une copie d'un morceau d'ecran autre part mais ne copier QUE ce qui concerne la composante rouge
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message par fweil »

@kelly,

Voici un exemple de traitement par canal RVB.

Utilises les touches du clavier :

- Espace pour générer une image aléatoire
- R pour afficher le canal rouge
- G pour afficher le canal vert
- B pour afficher le canal bleu

La procedure Random_Image permet de créer une image bidon. Tu peux remplacer l'appel de Random_Image par un LoadImage ou ce que tu veux.

Le code est basique et pas du tout optimisé, mais le résultat est assez rapide pour se rendre compte.

Code : Tout sélectionner

Enumeration
  #Window_Main
  #Gadget_Image
  #Image
EndEnumeration

;
; Random image.
;
Procedure Random_Image(Width.l, Height.l)
  ImageID = CreateImage(#Image, Width, Height)
  StartDrawing(ImageOutput())
    For i = 1 To 100
      Box(Random(Width), Random(Height), Random(Width), Random(Height), Random($FFFFFF))
    Next
    For i = 1 To 1000
      LineXY(Random(Width), Random(Height), Random(Width), Random(Height), Random($FFFFFF))
    Next
    For i = 1 To 200
      DrawingMode(1)
      BackColor(0, 0, 0)
      FrontColor(Random($FF), Random($FF), Random($FF))
      Locate(Random(Width), Random(Height))
      DrawText("Text " + Str(i))
    Next
  StopDrawing()
  ProcedureReturn ImageID
EndProcedure

Procedure RGB_Channels(Channel.l)
  UseImage(#Image)
  ImageHeight = ImageHeight()
  ImageWidth = ImageWidth()
  StartDrawing(ImageOutput())
    For y = 0 To ImageHeight - 1
      For x = 0 To ImageWidth - 1
        Plot(x, y, Point(x, y) & Channel)
      Next
    Next
  StopDrawing()
  SetGadgetState(#Gadget_Image, ImageID())
EndProcedure

  WindowWidth = 640
  WindowHeight = 480
  If OpenWindow(#Window_Main, 0, 0, WindowWidth, WindowHeight, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "MyWindow")
      AddKeyboardShortcut(#Window_Main, #PB_Shortcut_Escape, #PB_Shortcut_Escape) ; Quit
      AddKeyboardShortcut(#Window_Main, #PB_Shortcut_Space, #PB_Shortcut_Space) ; Refresh random image
      AddKeyboardShortcut(#Window_Main, #PB_Shortcut_R, #PB_Shortcut_R) ; Red channel
      AddKeyboardShortcut(#Window_Main, #PB_Shortcut_G, #PB_Shortcut_G) ; Green channel
      AddKeyboardShortcut(#Window_Main, #PB_Shortcut_B, #PB_Shortcut_B) ; Blue channel
      If CreateGadgetList(WindowID(#Window_Main))
          ImageGadget(#Gadget_Image, 10, 10, WindowWidth - 20, WindowHeight - 20, Random_Image(WindowWidth - 20, WindowHeight - 20))
      EndIf
      Quit = #False
      Repeat
        Select WaitWindowEvent()
          Case #PB_Event_CloseWindow
            Quit = #True
          Case #PB_Event_Menu
            Select EventMenuID()
              Case #PB_Shortcut_Escape
                Quit = #True
              Case #PB_Shortcut_Space
                SetGadgetState(#Gadget_Image, Random_Image(WindowWidth - 20, WindowHeight - 20))
              Case #PB_Shortcut_R
                RGB_Channels(#Red)
              Case #PB_Shortcut_G
                RGB_Channels(#Green)
              Case #PB_Shortcut_B
                RGB_Channels(#Blue)
            EndSelect
        EndSelect
      Until Quit
  EndIf
End
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
kelly
Messages : 176
Inscription : jeu. 09/sept./2004 16:15

Message par kelly »

je vais analyser ca =)
thx
Répondre