Strichstärke LineXY

Anfängerfragen zum Programmieren mit PureBasic.
uthi
Beiträge: 7
Registriert: 24.01.2005 11:06

Strichstärke LineXY

Beitrag von uthi »

Hallo,

kann man die Breite einer Linie vergrößern? Gibt es dazu einen Parameter oder separaten Befehl? Ansonsten wird immer nur mit 1 Pixel Strichstärke gezeichnet.

Danke!
Gruß

uthi
Benutzeravatar
diGGa
Beiträge: 249
Registriert: 01.04.2005 11:00
Kontaktdaten:

Beitrag von diGGa »

ganz spontan fällt mir ein: ne andere linie drunner malen
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

gibts da nicht irgend sowas wie dicke?
Also wie wenn man Text mit Transparentem hintergrund drucken will nutzt man ja drawingmode().
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Ich glaube, dass Falko mal einen Code gpostet hat, mit dem man die Strichstärke einstellen kann. Ich würde hier mal auf die Suche verweisen. Werde aber später auch nochmal gucken. Mir fehlt nur die Zeit, weil ich gleich noch Getränke (alkohol frei natürlich ;) ) kaufen gehen muss :|
Bild
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Das wird in Windows mit dem Pen (Stift) festgesetzt.
Mittels der WinAPI kannst du diesen aktuellen Pen ändern und dadurch die Stärke festlegen:

Code: Alles auswählen

hwnd.l = OpenWindow(0, 20, 20, 500, 500, #pb_window_systemmenu, "NIX")

pen.l = CreatePen_(#PS_SOLID , 5, RGB(0, 0, 0))  ;Pen erstellen

hdc = StartDrawing(WindowOutput())  ;Drawing beginnen, Decive Context speichern!
SelectObject_(hdc, pen)  ; Für diesen Device Context den neuen Pen laden
LineXY(20, 20, 100, 100)  ; Linie malen, mit aktuellem Pen
StopDrawing()

Repeat : Until WaitWindowEvent() = #PB_event_closewindow
Ist eigentlich ganz easy, ein Befehl um den neuen Pen zu erstellen und einen um diesen im aktuellen Drawing-Bereich zu benutzen. Nicht vergessen, nachher wieder auf letzten Pen umstellen. ;)
Du könntest dir so auch eine Funktion schreiben mit der du die Stärke des Stifts ändern kannst. WIchtig eben nur, du brauchst dazu immer ein Handle zu einem Device Context, (hier hdc.l).

Die Pen-Funktion:

Code: Alles auswählen

HPEN CreatePen(

    int fnPenStyle,	// pen style 
    int nWidth,	// pen width  
    COLORREF crColor 	// pen color 
   );
Alles Weitere findest du in der Win32api Hilfe.
Bei Fragen kannst du die aber auch hier stellen, bin noch da. ;)

//EDIT: Man kann auch noch den Stil der Linie ändern. Gepunktet, gestrichelt, und solche Sachen. VIelleicht im Moment weniger interessant für dich, wollte es nur mal gesagt haben.

//Edit2: Kleiner Fehler im Code, PS_SOLID muss natürlich #PS_SOLID heißen. (Dank an MLK)


mfg.

Sunny
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Steht was in der " Feature Requests and Wishlists" im englischen Forum.
Einander hat dazu eine schöne Procedure geschrieben.
Bis jetzt hat Fred noch nichts gemacht.

http://forums.purebasic.com/english/vie ... ight=falko
einander hat geschrieben:Falko:

Here is a proc I'm using to do deflines in PB:

Code: Alles auswählen

Procedure Lin(x,y,x1,y1,Width,Color)
   hDC=GETDC_(WindowID())
   pen=CreatePen_(#Ps_Solid,Width,color) 
   hPenOld=SelectObject_(hDC,pen)
   MoveToEx_(hDC,x,y,0):LineTo_(hDC,x1,y1)
   DeleteObject_(pen)
   DeleteObject_(hPenOld)
EndProcedure

;_____________________________________________
_X=GetSystemMetrics_(#SM_CXSCREEN)-8 : _Y=GetSystemMetrics_(#SM_CYSCREEN)-68
OpenWindow(0,0,0,_X,_Y,#WS_OVERLAPPEDWINDOW | #WS_MAXIMIZE,"")

lin(50,200,300,400,15,#red)
MessageRequester("","DONE",0)


Quote:
The command of Line() or LineXY() in Purebasic is good. But where can i do pixel or styles for this line?


You can also change the style with #Ps_dash, #Ps_dot, #Ps_dashdotdot, but only when the pen width equals 1.
Greetings from Spain
Einander
(Another GFA Invader)
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Falko hat geschrieben:Einander hat dazu eine schöne Procedure geschrieben.
Ich dachte ja das ist bei der X2D Library von freedimension dabei,
aber habe gerade nochmal nachgeschaut und ist nicht drin.

Vielleicht macht es freedimension ja noch für die Version 1.0 -
X2D_GetPen() ist ja schon drin, nur kein X2D_SetPen() und
X2D_CreatePen(). Richtig enttäuschend.

Die Lib von der ich rede ist übrigens auf purearea.net:
http://www.purearea.net/pb/download/userlibs/X2D.zip
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Danilo hat geschrieben:
Falko hat geschrieben:Einander hat dazu eine schöne Procedure geschrieben.
Ich dachte ja das ist bei der X2D Library von freedimension dabei,
aber habe gerade nochmal nachgeschaut und ist nicht drin.

Vielleicht macht es freedimension ja noch für die Version 1.0 -
X2D_GetPen() ist ja schon drin, nur kein X2D_SetPen() und
X2D_CreatePen(). Richtig enttäuschend.
Als ich damals nach (Verbesserungs-)Vorschlägen gefragt hatte wollte keiner antworten ;)
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
benny
Beiträge: 383
Registriert: 29.08.2004 09:18
Wohnort: Am Ende des www's
Kontaktdaten:

Beitrag von benny »

freedimension hat geschrieben:Als ich damals nach (Verbesserungs-)Vorschlägen
gefragt hatte wollte keiner antworten ;)
Also sind "wir" jetzt wieder an allem schuld ... :lol:
So long,
benny!
.
nur t0te f1sche schw1mmen m1t dem str0m - 00100 !
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

Als ich damals nach (Verbesserungs-)Vorschlägen gefragt hatte wollte keiner antworten
Das ist ja ein allgemeines Problem hier, wenn man es nichr gerade brauch, interessierts eh nicht... siehe Bugs
Antworten