Fenster Gestalten

Probleme beim Erstellen von 3D-Modellen und Texturen, keine Ahnung womit man Musik macht? Dies ist dein Forum.
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Fenster Gestalten

Beitrag von The_Dark_Zim-.- »

Wui

Hab ne kleine Frage ^^
Wie erstellt man Fenster die z.B. rund sind und nich so einen standart Rand wie die normalen Fenster haben????

bzw. gibt es ein Tool für soetwas???

Gruß ZIM
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

Code: Alles auswählen

OpenWindow(1, 0, 0, 100, 100, "abgerundetes Fenster")
SetWindowRgn_(WindowID(1), CreateRoundRectRgn_(0, 0, 100, 100, 30, 30), 0)

Repeat: Until WindowEvent() = #PB_Event_CloseWindow
->Rundet den das Fenster ab!
Musst halt aufpassen, dass Schließbutton noch sichtbar ist, daher ist es mit
TitleBar eher schlecht als recht..
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Re: Fenster Gestalten

Beitrag von scholly »

The_Dark_Zim-.- hat geschrieben:Wui
Wuff !
Wie erstellt man Fenster die z.B. rund sind und nich so einen standart Rand wie die normalen Fenster haben?
Sowas läuft wohl unter Skinning.

Im Codearchiv gibts unter Windows(Fenster) die Rubrik FX. Vielleicht ist da was dabei.

Oder http://www.purebasic.fr/english/viewtopic.php?t=17502.

Ohne es selber testen zu wollen: es scheint mir so zu sein, daß man ein randloses und transparentes Fenster braucht, in das man dann alle üblichen Fenster-Elemente (Close, Minimize, Maximize, oä) selber zeichnen und abarbeiten muß.

ps: mehrfach-Fragezeichen wirken auf manche Meschen demotivierend :wink:
Zuletzt geändert von scholly am 16.04.2008 12:43, insgesamt 2-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

@c4s
hm
ganz nett, aber er erstellt erst ein Eckiges
welches erst rund wird wenn man das verschiebt,
bzw. der andere Rand bleibt stehen :|

Edit: Besser ??
Das kam weil ich das von scholly noch garnicht gesehen hatte!
Zuletzt geändert von The_Dark_Zim-.- am 16.04.2008 13:32, insgesamt 3-mal geändert.
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

<OT>
The_Dark_Zim-.- hat geschrieben:hm
ganz nett
bitte gewöhne Dir an, entweder das Posting, auf das Du antwortest, in Teilen
zu zitieren oder aber den Antwortgeber direkt anzusprechen.

Denn wen meinst Du nun mit 'ganz nett'? c4s oder scholly?

</OT>
a²+b²=mc²
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Code: Alles auswählen

; auf die schnelle per SkinWin aus der PBOSL gelöst

hWnd = OpenWindow(0, 100, 200, 300, 300, "rundes Fenster",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
HideWindow(0, 1) 

hBitmap = CreateImage(1,300,300)

StartDrawing(ImageOutput(1))
  Circle(150, 150, 140, #Red)
  Circle(150, 150, 138, RGB(244,244,244))
StopDrawing()

SkinWin( hWnd, hBitmap,0,0 )

CreateGadgetList(WindowID(0))
ButtonGadget(1,140,140,20,20,"X")
HideWindow(0, 0) 
Repeat

  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          quit = #True
      EndSelect   
  EndSelect
 
Until Quit = #True

CloseWindow(0)
End
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

The_Dark_Zim-.- hat geschrieben:hm
ganz nett, aber er erstellt erst ein Eckiges
welches erst rund wird wenn man das verschiebt,
bzw. der andere Rand bleibt stehen :|
liegt daran, dass ich vergessen hatte es zuerst zu "verstecken".

Hier der richtige funktionsfähige Code:

Code: Alles auswählen

OpenWindow(1, 0, 0, 100, 100, "abgerundetes Fenster", #PB_Window_Invisible)
SetWindowRgn_(WindowID(1), CreateRoundRectRgn_(0, 0, 100, 100, 30, 30), 0)
HideWindow(1, #False)

Repeat: Until WindowEvent() = #PB_Event_CloseWindow
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Re: Fenster Gestalten

Beitrag von scholly »

The_Dark_Zim-.- hat geschrieben:Wie erstellt man Fenster die z.B. rund sind und nich so einen standart Rand wie die normalen Fenster haben?
Also zwischen rund und abgerundet, wie c4s anbietet, ist schon ein Unterschied.
Da mußt Du Dich schon entscheiden.
Hab ich in meiner Sammlung aber auch was für:

Code: Alles auswählen

;basiert auf hjbremer
;http://www.purebasic.fr/german/viewtopic.php?p=191981

hwnd = OpenWindow(0, 100, 200, 300, 300, "rundes Fenster",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
HideWindow(0, 1)

hbitmap = CreateImage(1,300,300)

  dc1 = StartDrawing(ImageOutput(1))
           
    SelectObject_(dc1, GetStockObject_(#BLACK_PEN))
    SelectObject_(dc1, GetStockObject_(#LTGRAY_BRUSH))
    RoundRect_(dc1,10,10,280,280,25,25)
    
  StopDrawing()

SkinWin( hWnd, hBitmap,0,0 )

CreateGadgetList(WindowID(0))
ButtonGadget(1,140,140,20,20,"X")

HideWindow(0, 0)
Repeat

  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          quit = #True
      EndSelect   
  EndSelect
 
Until Quit = #True

CloseWindow(0)
End
oder

Code: Alles auswählen

;basiert auf marco2006
;http://www.purebasic.fr/german/viewtopic.php?p=191981

hwnd = OpenWindow(0, 100, 200, 300, 300, "rundes Fenster",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
HideWindow(0, 1)

hbitmap = CreateImage(1,300,300)

x = 10
y = 10
l =280
b =280
r = 10

If StartDrawing(ImageOutput(1))
  Line(x+r, y, l-2*r, 0, RGB(5,5,5))
  Line(x+r, y+b, l-2*r, 0, RGB(5,5,5))
  Line(x, y+r, 0, b-2*r, RGB(5,5,5))
  Line(x+l, y+r, 0, b-2*r, RGB(5,5,5))

  For i=0 To 90
    Plot((x+r)-r*Cos(i/180*#PI), (y+r)-r*Sin(i/180*#PI), RGB(5,5,5))
    Plot((x+l-r)+r*Cos(i/180*#PI), (y+r)-r*Sin(i/180*#PI), RGB(5,5,5))
    Plot((x+r)-r*Cos(i/180*#PI), (y+b-r)+r*Sin(i/180*#PI), RGB(5,5,5))
    Plot((x+l-r)+r*Cos(i/180*#PI), (y+b-r)+r*Sin(i/180*#PI), RGB(5,5,5))
  Next
  
  FillArea(150, 150, RGB(5,5,5), RGB(155,155,155))
  StopDrawing()
EndIf

SkinWin( hWnd, hBitmap,0,0 )

CreateGadgetList(WindowID(0))
ButtonGadget(1,140,140,20,20,"X")
HideWindow(0, 0)
Repeat

  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          quit = #True
      EndSelect   
  EndSelect
 
Until Quit = #True

CloseWindow(0)
End
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

@ c4s
Das sieht doch gleich viel besser aus ^^
thx

@ scholly
Mein PB kann mit

Code: Alles auswählen

SkinWin( hWnd, hBitmap,0,0 )
nix anfangen
Muss ich da noch was installieren????
Das mit dem Runden war nur ein Beispiel ^^ Wäre natürlich cool wenn man auch andere formen machen kann :wink:
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

The_Dark_Zim-.- hat geschrieben: Mein PB kann mit

Code: Alles auswählen

SkinWin( hWnd, hBitmap,0,0 )
nix anfangen
Muss ich da noch was installieren????
PBOSL
Das mit dem Runden war nur ein Beispiel ^^ Wäre natürlich cool wenn man auch andere formen machen kann :wink:
Wenn ich nachher zuhause bin, bastel ich Dir mal eben ein sternförmiges Fenster, aber das dauert noch was...
Oder möchtest Du ein Ei (Ellipse) oder was anderes?
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Antworten