Page 1 sur 2

une fenetre etrangement simple

Publié : ven. 29/juil./2005 22:06
par kelly
Peut on afficher une fenetre graphique sans bord ni barre de titre et dans la taille que l'on veux; style une fenetre de 130 pix/ 80 pix ??
Si oui, ca se passe ou? Quand? Comment? Sur terre?


Meme question mais pour un sprite (sans fenetre donc, mais simplement affiché sur le bureau de windows)

Publié : ven. 29/juil./2005 22:44
par Droopy
Si tu créé une fenètre avec OpenWindow() et l'option #PB_Window_BorderLess ça devrait le faire.

Publié : sam. 30/juil./2005 7:47
par lionel_om
Pour un sprite ou une image, tu dois obligatoirement l'afficher sur une window/ ou un screen. Mais encore une fois, tu peux utiliser la constante pour enlever les bordures et on aura l'impression que c'est une image "volante".

Publié : sam. 30/juil./2005 22:34
par Backup
le soldat nous avait fait un truc geant pour faire des fenetres de la forme que tu veux

c'est un exemple a méditer , une fenetre ronde ça te dit ? :D

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 3.90
;
; Explication du programme :
; Donner à une fenêtre une forme spécifique. Par exemple faire une fenêtre ronde ou triangulaire.


Enumeration
  #Quitter
  #Forme1
  #Forme2
  #Forme3
  #Forme4
  #Forme5
EndEnumeration



Procedure Forme()
  If GetGadgetState(#Forme1) ; si on a choisi la forme 1
    
    Region = CreateRoundRectRgn_(0, 0, WindowWidth(), WindowHeight(), 40, 60) ; Création de la région pour faire une fenêtre avec les angles arrondis
    ; CreateRoundRectRgn_(X1, Y1, X2, Y2, R1, R2)
    ; X1, Y1 : coordonné du point haut gauche de la region
    ; X1, Y1 : coordonné du point haut gauche de la region
    ; R1, R2 : rayon de l'ellipse qui va servir à arrondir les angles de la region
    SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
    DeleteObject_(Region) ; On supprime la région
    
  ElseIf GetGadgetState(#Forme2) ; si on a choisi la forme 2
    
    Region = CreateEllipticRgn_(0, 0, WindowWidth(), WindowHeight()) ; Création de la région pour faire une fenêtre elliptique
    ; CreateEllipticRgn_(X1, Y1, X2, Y2)
    ; X1, Y1 : coordonné du point haut gauche de la region
    ; X1, Y1 : coordonné du point haut gauche de la region
    SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
    DeleteObject_(Region) ; On supprime la région
    
  ElseIf GetGadgetState(#Forme3) ; si on a choisi la forme 3
    
    Region = CreatePolygonRgn_(?Triangle, 4, #Alternate) ; Création de la région pour faire une fenêtre elliptique
    ; CreateRoundRectRgn_(Array, NbPoints, Type)
    ; Array : Adresse de la liste ou de la Data
    ; NbPoints : Nombre de points du polygone + 1 (car on fait une boucle donc on a 2 fois le premier point)
    ; Type : Voir msdn
    SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
    DeleteObject_(Region) ; On supprime la région
    
  ElseIf GetGadgetState(#Forme4) ; si on a choisi la forme 4
    
    Region1 = CreateRectRgn_(0, 0, WindowWidth(), WindowHeight()) ; Création d'une région en rectangle
    Region2 = CreateRectRgn_(10, 10, WindowWidth() - 10, 50) ; Création d'une région en rectangle
    ; CreateRectRgn_(X1, Y1, X2, Y2)
    ; X1, Y1 : coordonné du point haut gauche de la region
    ; X1, Y1 : coordonné du point haut gauche de la region
    CombineRgn_(Region1, Region1, Region2, #RGN_DIFF) ; On combine les 2 régions
    ; Les modes suivants sont disponibles :
    ; #RGN_AND : Intersection
    ; #RGN_OR : Union
    ; #RGN_DIFF : Différences
    ; #RGN_XOR : Union moins les intersections
    SetWindowRgn_(WindowID(), Region1, #True) ; On applique la région finale
    DeleteObject_(Region1) ; On supprime les régions
    DeleteObject_(Region2)
    
  ElseIf GetGadgetState(#Forme5) ; si on a choisi la forme 5
    
    Region1 = CreatePolygonRgn_(?Triangle, 4, #Alternate)
    Region2 = CreateEllipticRgn_(0, 0, WindowWidth(), WindowHeight())
    CombineRgn_(Region1, Region1, Region2, #RGN_OR) ; On combine les 2 régions
    SetWindowRgn_(WindowID(), Region1, #True) ; On applique la région finale
    DeleteObject_(Region1) ; On supprime les régions
    DeleteObject_(Region2)
    
  EndIf
EndProcedure




; Création de la fenêtre et dela GadgetList
If OpenWindow(0, 0, 0, 400, 400, #PB_Window_Borderless | #PB_Window_ScreenCentered, "Test") = 0 Or CreateGadgetList(WindowID(0)) = 0
  End
EndIf

; Création des boutons et de l'option d'affichage
ButtonGadget(#Quitter, 100, 100, 200, 20, "Quitter")
OptionGadget(#Forme1, 100, 125, 200, 15, "Angles arrondis")
OptionGadget(#Forme2, 100, 140, 200, 15, "Ronde")
OptionGadget(#Forme3, 100, 155, 200, 15, "Triangle")
OptionGadget(#Forme4, 100, 170, 200, 15, "Trouée")
OptionGadget(#Forme5, 100, 185, 200, 15, "Triangle + Rond")


Repeat
  Event = WaitWindowEvent()
  
  If Event = #PB_EventGadget
    Select EventGadgetID() ; boutons, zone de texte, ...
      Case #Quitter
        Event = #PB_EventCloseWindow ; On quitte
      Default
        Forme() ; sinon, on change la forme de la fenêtre
    EndSelect
  EndIf
  
Until Event = #PB_EventCloseWindow

End



DataSection
  Triangle :
    Data.l 200, 400, 0, 0, 400, 0, 200, 400 ; Coordonnées des points du triangle en x, y (il faut faire une boucle donc on revient au premier point du triangle
EndDataSection

Publié : dim. 31/juil./2005 21:49
par Le Soldat Inconnu
oui, une fenêtre sans bordure sur laquelle tu ajoutes un openwindowedscreen pour y afficher tes sprites comme sur un écran de jeux :wink:

Publié : mar. 02/août/2005 3:46
par kelly
Qui peux me donner un squelette de programme le plus simple possible d'une fenetre graphique de par exemple 200/140 et sans barre de titre ?
Merci bien msieur dames 8)

Publié : sam. 06/août/2005 13:39
par Backup
j'avais pas de forfait internet potable !! donc j'ai eu envie de te repondre
mais le cout des connections m'a freiné !!

maintenant ça va :D

voici ton exemple basé sur le code du soldat :

il gere plusieur forme !! :D

Code : Tout sélectionner


; prg crée par Dobro
; en pure basic 3.94 beta4
; a l'aide de Japbe !!! <--ça marche avec !! :D






InitSprite()
InitMouse()

Declare Forme(forme)



If OpenWindow(0, 0, 0, 400, 400, #PB_Window_BorderLess | #PB_Window_ScreenCentered, "Test") = 0 Or CreateGadgetList(WindowID(0)) = 0
        End
EndIf
WindowID = WindowID(0) 
OpenWindowedScreen(WindowID, 0, 0, 400, 400, AutoStretch, 1, 1)

CreateSprite(1, 32,32)
StartDrawing(SpriteOutput(1))
Box(0, 0,32, 32,RGB($F1,$FD,$1A) )
StopDrawing()

Forme(2)  
; change le chifre = change la forme !!!
; forme(0) = rectangle 
; Forme(1) = rectangle avec bord arrondi
; Forme(2)= rond !!!
; Forme(3)=Triangle                                      
; forme(4)=rectangle avec trou
; forme(5)=rond+triangle



sensx=10/2
sensy=16/2
Repeat 
        ExamineMouse() 
     
        If MouseButton(2) ; si clique bouton droit
                End ; on quitte
        EndIf
        xp=xp+sensx
        yp=yp+sensy
        If xp+32>400 : sensx=-sensx:EndIf
        If xp<0 : sensx=-sensx:EndIf
        
        If yp+32>400 : sensy=-sensy:EndIf
        If yp<0 : sensy=-sensy:EndIf
        
        DisplaySprite(1, xp, yp)
        FlipBuffers()
        ClearScreen(255, 100, 100) 
ForEver

End








; les procedures


Procedure Forme(forme)
        Select forme 
                Case 1
                        Region = CreateRoundRectRgn_(0, 0, WindowWidth(), WindowHeight(), 40, 60) ; Création de la région pour faire une fenêtre avec les angles arrondis
                        ; CreateRoundRectRgn_(X1, Y1, X2, Y2, R1, R2)
                        ; X1, Y1 : coordonné du point haut gauche de la region
                        ; X1, Y1 : coordonné du point haut gauche de la region
                        ; R1, R2 : rayon de l'ellipse qui va servir à arrondir les angles de la region
                        SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
                        DeleteObject_(Region) ; On supprime la région
                Case 2
                        Region = CreateEllipticRgn_(0, 0, WindowWidth(), WindowHeight()) ; Création de la région pour faire une fenêtre elliptique
                        ; CreateEllipticRgn_(X1, Y1, X2, Y2)
                        ; X1, Y1 : coordonné du point haut gauche de la region
                        ; X1, Y1 : coordonné du point haut gauche de la region
                        SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
                        DeleteObject_(Region) ; On supprime la région
                Case 3
                        Region = CreatePolygonRgn_(?Triangle, 4, #ALTERNATE) ; Création de la région pour faire une fenêtre elliptique
                        ; CreateRoundRectRgn_(Array, NbPoints, Type)
                        ; Array : Adresse de la liste ou de la Data
                        ; NbPoints : Nombre de points du polygone + 1 (car on fait une boucle donc on a 2 fois le premier point)
                        ; Type : Voir msdn
                        SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
                        DeleteObject_(Region) ; On supprime la région
                
        
                Case 4 ; rectangle
                Region1 = CreateRectRgn_(0, 0, WindowWidth(), WindowHeight()) ; Création d'une région en rectangle
                Region2 = CreateRectRgn_(10, 10, WindowWidth() - 10, 50) ; Création d'une région en rectangle
                ; CreateRectRgn_(X1, Y1, X2, Y2)
                ; X1, Y1 : coordonné du point haut gauche de la region
                ; X1, Y1 : coordonné du point haut gauche de la region
                CombineRgn_(Region1, Region1, Region2, #RGN_DIFF) ; On combine les 2 régions
                ; Les modes suivants sont disponibles :
                ; #RGN_AND : Intersection
                ; #RGN_OR : Union
                ; #RGN_DIFF : Différences
                ; #RGN_XOR : Union moins les intersections
                SetWindowRgn_(WindowID(), Region1, #True) ; On applique la région finale
                DeleteObject_(Region1) ; On supprime les régions
                DeleteObject_(Region2)
        Case 5
                Region1 = CreatePolygonRgn_(?Triangle, 4, #ALTERNATE)
                Region2 = CreateEllipticRgn_(0, 0, WindowWidth(), WindowHeight())
                CombineRgn_(Region1, Region1, Region2, #RGN_OR) ; On combine les 2 régions
                SetWindowRgn_(WindowID(), Region1, #True) ; On applique la région finale
                DeleteObject_(Region1) ; On supprime les régions
                DeleteObject_(Region2) 
        
EndSelect




EndProcedure

DataSection
Triangle :
Data.l 200, 400, 0, 0, 400, 0, 200, 400 ; Coordonnées des points du triangle en x, y (il faut faire une boucle donc on revient au premier point du triangle
EndDataSection


Publié : dim. 07/août/2005 13:41
par kelly
@Dodo
Je vais etudier ton code avec minutie
THX

Publié : dim. 07/août/2005 13:56
par Backup
kelly a écrit :@Dodo
Je vais etudier ton code avec minutie
THX
Dobro !! :D

le Dobro estun instrument de music qui resemble a une guitare ! mais
au lieu d'une table d'harmonie pour amplifier le son des cordes , le Dobro
dispose d'un resonateur , un cone metallique tres fin sur lequel repose les cordes , le Dobro a ete popularisé par Mark knopfler (Dires-straits)
Mais existe depuis 1926 ! :D

et j'en possede un ! d'ou mon pseudo :D

Publié : dim. 07/août/2005 15:22
par kelly
@Dobro
Tu dois fierement ressortir ton speach a chaque fois. Ca doit couter cher =)
Bon, j'ai essayé la fenetre et je suis déçue. Alors, le contraire est il possible; c'est a dire une fenetre comme on en fait (vous savez, avec des boutons et autre gadjets) mais mappé avec un graph ?

Publié : dim. 07/août/2005 15:30
par Backup
Tu dois fierement ressortir ton speach a chaque fois. Ca doit couter cher =)

je sais pas comment il faut que je prenne ça :D


et pour skiner des fenetre tu as ce lien qui t'indiquera une piste !

http://purebasic.hmt-forum.com/viewtopic.php?t=2937

Publié : dim. 07/août/2005 17:53
par kelly
C T un compliment !
Et pour le prix, je parlais de ta piece de collection...

Publié : dim. 07/août/2005 18:04
par Backup
cela pouvais etre pris facilement dans l'autre sens non ? :D

Mettons que j'ai rien dit ! :lol:

je viens de réediter mon message pour virer le coté argneux :D
désolé pour la meprise ! :D


pour les Dobro voici un lien qui en contient d'autre
en Français pour tout savoir sur ces merveilles
http://www.membres.lycos.fr/resophonic/

:D

Publié : dim. 07/août/2005 18:23
par kelly
Ha oui, je me rapelle bien que dire strait avait une Dobro mais entierement metallique je crois. Mais je ne sais tjr pas : cela se fabrique t'il encore ?

Publié : dim. 07/août/2005 18:47
par Backup
Un Dobro ! :D

oui le model de Mark knofler est un Style 0 de 1926 !! (tres rare)
il est de marque "National"

on appel ces instruments des Dobro car on ne peut pas appeler ça des Guitare (il a bien fallu leur donner un nom !!)

et Dobro est aussi une Marque !! j'explique :

dobro viens de DOpeyra BROsers les freres dopeyra on inventé et fabriqué ces instruments avant l'invention des Ampli guitare !!
a l'epoque il fallait avoir un instrument qui puisse sonner aussi fort qu'un piano !

alors il ont inventé ce systeme de production sonore a base de "resonateur"

les 2 freres Dopeyra ont donc crée la Dobro compagnie , puis ensuite l'un des deux freres est partie pour créé la "National Compagnie"

Dobro faisais des instrument en Bois (toujours avec un resonateur)
comme la photo qui apparait dans le lien que j'ai mis !

et National , faisait des Dobros en metal (Bronze-cuivre-Nickel-Chrome)
(comme celui de Mark choux fleur)

et puis ensuite les deux compagnie fabriquaient des instruments en bois et en metal !!

la National compagnie a fait Faillite , il ne restai plus que Dobro Compagnie , puis plus tard Dobro a ete revendu a OMI puis tres vite
revendu a Gibson !!!

il existe une Marque National basé a toulouse qui comercialise des Dobro, mais cela n'a rien a voir avec La National Compagnie !


aujourd'hui ED Dopeyra l'inventeur du resonateur vit toujours !
il est conseillé chez Gibson pour la fabrication des Dobro de la Marque Dobro!

Mon Dobro (Metal)est une Replique d'un model de l'année 1930 !!
Fait sous la direction de ED dopeyra chez Gibson ! il date de 1988
c'est un model (custom) aniversaire de la fabrication du meme model chez National du coup le logo de mon Dobro est un Logo avec le look
du 2eme Logo National , mais avec Marqué dessus "By Dobro"

voila je mettrais des Photos a l'ocasion si tu veux voir ! :D

pour repondre a ta question ! oui les Dobro se Fabrique toujours !!

Malheureusement il existe beaucoup de Copie Chinoise ect..
qui a mon avis ternisse les Vrais ! :D (Son pourri !)