Button per Maus Bewegen-vergrößern wie beim Visual Designer
Button per Maus Bewegen-vergrößern wie beim Visual Designer
Hi,
gibt es vom Visual Designer auch irgendwo den Source ?
Oder irgendwelche Beispiel wie das geht:
z.B. ein Button ins Fenster setzen und dann verschieben
und die größe ändern.
Wäre echt klasse wann ich darüber infos bekommen
könnte.
--------------------------------------------
Thatsanee
gibt es vom Visual Designer auch irgendwo den Source ?
Oder irgendwelche Beispiel wie das geht:
z.B. ein Button ins Fenster setzen und dann verschieben
und die größe ändern.
Wäre echt klasse wann ich darüber infos bekommen
könnte.
--------------------------------------------
Thatsanee
Zuletzt geändert von Thatsanee am 30.11.2005 23:15, insgesamt 2-mal geändert.
Naja, wer weiß ob der Visual designer überhaupt mit PureBásic programmiert wurde, villeicht wurde dafür C++ benutzt...
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Der VisualDesigner ist in PureBasic geschrieben. Im Source wird nur minimal WinAPI verwendet. Für eine der ersten Versionen wurde auch mal der Source Veröffentlicht. Hab leider keinen link mehr dazu.benpicco hat geschrieben:Naja, wer weiß ob der Visual designer überhaupt mit PureBásic programmiert wurde, villeicht wurde dafür C++ benutzt...
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Schade, würde mich auch interessieren.ts-soft hat geschrieben: Der VisualDesigner ist in PureBasic geschrieben. Im Source wird nur minimal WinAPI verwendet. Für eine der ersten Versionen wurde auch mal der Source Veröffentlicht. Hab leider keinen link mehr dazu.
Vielleicht hat es sich ja einer damals geladen und stellt
es mal zum download bereit.
DONALD
www.PureBasic-Donald.de gibt es im Moment nicht mehr
PureBasic - jaPBe - PureVisonXP - TailBite

PureBasic - jaPBe - PureVisonXP - TailBite
- Green Snake
- Beiträge: 1394
- Registriert: 22.02.2005 19:08
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Bitte sehr....
Für Gadgets
http://www.purebasic-lounge.de/viewtopic.php?t=1038
Für Toolbars...
http://www.purebasic-lounge.de/viewtopic.php?t=2038
Für Gadgets
http://www.purebasic-lounge.de/viewtopic.php?t=1038
Für Toolbars...
http://www.purebasic-lounge.de/viewtopic.php?t=2038
Hallo Hroudtwolf,Hroudtwolf hat geschrieben:Bitte sehr....
danke, aber es ist noch nicht das was ich Suche.
Hast Du auch noch eine "demo" mit der man mehrere Buttons
benutzen kann und auch die GRÖSSE verändern kann ?
Hab zwar selbst schon das eine oder andere ausprobiert,
aber so richtig klappt es nicht.
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Hab mal etwas zusammengekritzelt, was unter Windows und Linux funzt.
Code: Alles auswählen
#MB_DOWN = 2
#MB_UP = 4
#RESIZEBOX_WIDTH = 6
#RESIZEBOX_HEIGHT = 6
Structure SArea_Area
;Identifiers:
ID.l
;Positions:
X.l
Y.l
Width.l
Height.l
EndStructure
Structure SArea_Box
X.l
Y.l
EndStructure
NewList Area_Area.SArea_Area()
Dim Area_Box.SArea_Box(7)
Procedure WindowMouseButton(Wnd, ButtonNr)
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
;Linux Version
Protected gdkWnd.l, x.l, y.l, mask.l
If Wnd
*Window.GTKWindow = Wnd
gdkWnd = *Window\bin\child\window
gdk_window_get_pointer_(gdkWnd, @x, @y, @mask)
Select ButtonNr
Case 0
If (mask & #GDK_BUTTON1_MASK)
ProcedureReturn 1
EndIf
Case 1
If (mask & #GDK_BUTTON3_MASK)
ProcedureReturn 1
EndIf
Case 2
If (mask & #GDK_BUTTON2_MASK)
ProcedureReturn 1
EndIf
EndSelect
EndIf
CompilerElse
;Windows Version
If Wnd And GetForegroundWindow_() = Wnd
Select ButtonNr
Case 0
If GetAsyncKeyState_(#VK_LBUTTON) > 0
ProcedureReturn 1
EndIf
Case 1
If GetAsyncKeyState_(#VK_RBUTTON) > 0
ProcedureReturn 1
EndIf
Case 2
If GetAsyncKeyState_(#VK_MBUTTON) > 0
ProcedureReturn 1
EndIf
EndSelect
EndIf
CompilerEndIf
ProcedureReturn 0
EndProcedure
Procedure.l IsCoordOnArea(X.l, Y.l, AX.l, AY.l, AWidth.l, AHeight.l)
If X >= AX And Y >= AY And (AX+AWidth) >= X And (AY+AHeight) >= Y
ProcedureReturn 1
EndIf
ProcedureReturn 0
EndProcedure
Procedure.l CreateArea(x, y, width, height)
Static CurrentID.l
If width < 0 : x + width : width * -1 : EndIf
If height < 0 : y + height : height * -1 : EndIf
CurrentID + 1
AddElement(Area_Area())
Area_Area()\ID = CurrentID.l
Area_Area()\X = x
Area_Area()\Y = y
Area_Area()\Width = width
Area_Area()\height = height
ProcedureReturn CurrentID
EndProcedure
Procedure.l DeleteArea(ID)
ForEach Area_Area()
If Area_Area()\ID = ID
DeleteElement(Area_Area())
Result = 1
Break
EndIf
Next
ProcedureReturn Result
EndProcedure
Procedure.l DrawAreas(WindowID, *Callback)
Static MouseX.l, MouseY.l, oMouseX.l, oMouseY.l
Static oLMouseButton.l, LMouseButton.l
Static CurAreaSelected.l, CurBoxSelected.l
Protected DeltaMouseX.l, DeltaMouseY.l, LMEvent.l
oLMouseButton = LMouseButton
LMouseButton = WindowMouseButton(WindowID, 0)
oMouseX = MouseX
oMouseY = MouseY
MouseX = WindowMouseX()
MouseY = WindowMouseY()
DeltaMouseX = MouseX-oMouseX
DeltaMouseY = MouseY-oMouseY
If oLMouseButton <> 0 And LMouseButton = 0
LMEvent = #MB_UP
ElseIf oLMouseButton = 0 And LMouseButton <> 0
LMEvent = #MB_DOWN
EndIf
If LMEvent = #MB_UP
CurAreaSelected = 0
CurBoxSelected = 0
If Area_Area()\Width < 0 : Area_Area()\X + Area_Area()\Width : Area_Area()\Width * -1 : EndIf
If Area_Area()\Height < 0 : Area_Area()\Y + Area_Area()\Height : Area_Area()\Height * -1 : EndIf
EndIf
ForEach Area_Area()
; If Area_Area()\Width < 0
; Area_Area()\X + Area_Area()\Width
; Area_Area()\Width * -1
; If CurBoxSelected <> 0
; If CurBoxSelected <= 2 Or (CurBoxSelected <= 6 And CurBoxSelected >= 5)
; CurBoxSelected + 2
; Else
; CurBoxSelected - 2
; EndIf
; EndIf
; EndIf
; If Area_Area()\Height < 0
; Area_Area()\Y + Area_Area()\Height
; Area_Area()\Height * -1
; If CurBoxSelected <> 0
; If CurBoxSelected <= 2 Or (CurBoxSelected <= 6 And CurBoxSelected >= 5)
; CurBoxSelected + 2
; Else
; CurBoxSelected - 2
; EndIf
; EndIf
; EndIf
If *Callback
x = Area_Area()\X
y = Area_Area()\Y
w = Area_Area()\Width
h = Area_Area()\Height
If w < 0 : x + w : w * -1 : EndIf
If h < 0 : y + h : h * -1 : EndIf
CallFunctionFast(*Callback, Area_Area()\ID, x, y, w, h)
EndIf
;Border
DrawingMode(2|4)
Box(Area_Area()\X, Area_Area()\Y, Area_Area()\Width, Area_Area()\Height)
DrawingMode(2)
;Cornerpoints
Area_Box(0)\X = (Area_Area()\X - Int(#RESIZEBOX_WIDTH * 0.5))
Area_Box(0)\Y = (Area_Area()\Y - Int(#RESIZEBOX_HEIGHT * 0.5))
Area_Box(1)\X = (Area_Area()\X - Int(#RESIZEBOX_WIDTH * 0.5)) + Area_Area()\Width
Area_Box(1)\Y = (Area_Area()\Y - Int(#RESIZEBOX_HEIGHT * 0.5))
Area_Box(2)\X = (Area_Area()\X - Int(#RESIZEBOX_WIDTH * 0.5)) + Area_Area()\Width
Area_Box(2)\Y = (Area_Area()\Y - Int(#RESIZEBOX_HEIGHT * 0.5)) + Area_Area()\Height
Area_Box(3)\X = (Area_Area()\X - Int(#RESIZEBOX_WIDTH * 0.5))
Area_Box(3)\Y = (Area_Area()\Y - Int(#RESIZEBOX_HEIGHT * 0.5)) + Area_Area()\Height
Area_Box(4)\X = (Area_Area()\X - Int(#RESIZEBOX_WIDTH * 0.5)) + Area_Area()\Width * 0.5
Area_Box(4)\Y = (Area_Area()\Y - Int(#RESIZEBOX_HEIGHT * 0.5))
Area_Box(5)\X = (Area_Area()\X - Int(#RESIZEBOX_WIDTH * 0.5)) + Area_Area()\Width
Area_Box(5)\Y = (Area_Area()\Y - Int(#RESIZEBOX_HEIGHT * 0.5)) + Area_Area()\Height * 0.5
Area_Box(6)\X = (Area_Area()\X - Int(#RESIZEBOX_WIDTH * 0.5)) + Area_Area()\Width * 0.5
Area_Box(6)\Y = (Area_Area()\Y - Int(#RESIZEBOX_HEIGHT * 0.5)) + Area_Area()\Height
Area_Box(7)\X = (Area_Area()\X - Int(#RESIZEBOX_WIDTH * 0.5))
Area_Box(7)\Y = (Area_Area()\Y - Int(#RESIZEBOX_HEIGHT * 0.5)) + Area_Area()\Height * 0.5
;Movement of the area
If LMEvent = #MB_DOWN And IsCoordOnArea(MouseX, MouseY, Area_Area()\X+Int(#RESIZEBOX_WIDTH*0.5), Area_Area()\Y+Int(#RESIZEBOX_HEIGHT*0.5), Area_Area()\Width-#RESIZEBOX_WIDTH, Area_Area()\Height-#RESIZEBOX_HEIGHT) = 1
If CurAreaSelected = 0 And CurBoxSelected = 0
CurAreaSelected = Area_Area()\ID
CurBoxSelected = 0
EndIf
ElseIf CurAreaSelected = Area_Area()\ID And CurBoxSelected = 0
Area_Area()\X + DeltaMouseX
Area_Area()\Y + DeltaMouseY
EndIf
;Draw and check the resizeboxes
For k=0 To 7
Box(Area_Box(k)\X, Area_Box(k)\Y, #RESIZEBOX_WIDTH, #RESIZEBOX_HEIGHT)
If LMEvent = #MB_DOWN And IsCoordOnArea(MouseX, MouseY, Area_Box(k)\X, Area_Box(k)\Y, #RESIZEBOX_WIDTH, #RESIZEBOX_HEIGHT) = 1
If CurAreaSelected = 0 And CurBoxSelected = 0
CurAreaSelected = Area_Area()\ID
CurBoxSelected = k+1
EndIf
ElseIf CurAreaSelected = Area_Area()\ID And CurBoxSelected = k+1
Select k
Case 0 ;Left-Top
Area_Area()\Width + (Area_Area()\X-MouseX)
Area_Area()\X = MouseX
Area_Area()\Height + (Area_Area()\Y-MouseY)
Area_Area()\Y = MouseY
Case 1 ;Right-Top
Area_Area()\Width = (MouseX-Area_Area()\X)
Area_Area()\Height + (Area_Area()\Y-MouseY)
Area_Area()\Y = MouseY
Case 2 ;Right-Bottom
Area_Area()\Width = (MouseX-Area_Area()\X)
Area_Area()\Height = (MouseY-Area_Area()\Y)
Case 3 ;Left-Bottom
Area_Area()\Width + (Area_Area()\X-MouseX)
Area_Area()\X = MouseX
Area_Area()\Height = (MouseY-Area_Area()\Y)
Case 4 ;Top
Area_Area()\Height + (Area_Area()\Y-MouseY)
Area_Area()\Y = MouseY
Case 5 ;Right
Area_Area()\Width = (MouseX-Area_Area()\X)
Case 6 ;Bottom
Area_Area()\Height = (MouseY-Area_Area()\Y)
Case 7 ;Left
Area_Area()\Width + (Area_Area()\X-MouseX)
Area_Area()\X = MouseX
EndSelect
EndIf
Next
Next
EndProcedure
;-Example:
Procedure TheCallback(ID, X, Y, Width, Height)
Box(X, Y, Width, Height, RGB(255-ID*10, 0, 0))
EndProcedure
OpenWindow(0, 0, 0, 640, 480, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Test")
ID = CreateArea(100, 100, 320, 200)
CreateImage(0, 640, 480)
Repeat
;Backbuffer:
ResizeImage(0, WindowWidth(), WindowHeight())
StartDrawing(ImageOutput())
Box(0, 0, ImageWidth(), ImageHeight(), RGB(255, 255, 255))
DrawAreas(WindowID(), @TheCallback())
StopDrawing()
;Flip it:
StartDrawing(WindowOutput())
DrawImage(ImageID(), 0, 0)
StopDrawing()
Event = WindowEvent()
Delay(30)
Until Event = #PB_Event_CloseWindow
End
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.