Seite 1 von 1

wie einen Text diagonal in Grafik einfügen ?

Verfasst: Mi 13. Okt 2021, 16:25
von gambasso
moin,

wie bekomme ich z.b. neben einer diagonalen Linie ein Text auch diagonal eingefügt?

Ich möchte in einer Zeichnung neben einer diagonalen Linie dazu eine Bemerkung längs der Linie eintragen.

Re: wie einen Text diagonal in Grafik einfügen ?

Verfasst: Do 14. Okt 2021, 00:51
von vuott
Ein einfaches und etwas grobes Beispiel:
gambas code
Private DrawingArea1 As DrawingArea


Public Sub Form_Open()

  With Me
    .W = 400
    .H = 400
    .Center
    .Arrangement = Arrange.Fill
  End With
  With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
    .X = 0
    .Y = 0
    .Background = Color.Orange
  End With

End


Public Sub DrawingArea1_Draw()

  With Paint
    .LineTo(400, 400)
    .Stroke
' --- der Text ---
    .Translate(140, 100)
    .Rotate(Rad(315))
    .Font.Size = 20
    .Brush = .Color(Color.Yellow)
    .DrawText("G", 0, 0, .Font.TextWidth("G"), .Font.TextHeight("G"), Align.Center)
    .DrawText("a", 20, 0, .Font.TextWidth("a"), .Font.TextHeight("a"), Align.Center)
    .DrawText("m ", 40, 0, .Font.TextWidth("m"), .Font.TextHeight("m"), Align.Center)
    .DrawText("b", 65, 0, .Font.TextWidth("b"), .Font.TextHeight("b"), Align.Center)
    .DrawText("a", 83, 0, .Font.TextWidth("a"), .Font.TextHeight("a"), Align.Center)
    .DrawText("s", 100, 0, .Font.TextWidth("s"), .Font.TextHeight("s"), Align.Center)
    .End
  End With

End

Re: wie einen Text diagonal in Grafik einfügen ?

Verfasst: Do 14. Okt 2021, 13:31
von gambasso
moin,

danke schön, das klappt. Sieht aber recht umständlich aus.
Ich dachte an einen Text in einer TextBox eingeben und diesen Text dann entlang einer Linie positionieren.

Für waagerechten Text mache ich diesen zum Mouse.Cursor und kann ihn durch 'Click' einfügen.
Das wäre diagonal schön. Durch eine durchsichtige ScrollArea und ein Image ist es möglich, aber auch umständlich.
Muß ich mir was einfallen lassen.

Re: wie einen Text diagonal in Grafik einfügen ?

Verfasst: Do 14. Okt 2021, 15:21
von Crabman
Moin
Hier ein grober Vorschlag vor mir (Snippet-Projekt anbei):
Gruß
Crabman

Code: Alles auswählen

' Gambas class file

Public Sub Form_Open()

  Slider1_Change()

End

Public Sub PaintText(hText As String, Angle As Integer, x As Integer, y As Integer)

  Dim hPicture As Picture
  Dim w, h As Integer

  hPicture = New Picture(PictureBox1.w, PictureBox1.h, True)
  w = PictureBox1.w
  h = PictureBox1.h

  Paint.Begin(hPicture)
    Paint.Translate(x, y)
    Paint.Rotate(Rad(-Angle))
    Paint.Brush = Paint.Color(Color.Black)
    Paint.font = Font["Sans Serif, 24, Bold"]
    Paint.DrawText(hText, -Paint.TextExtents(hText).w / 2, Paint.TextExtents(hText).h / 2)
  Paint.End

  PictureBox1.Picture = hPicture  
  
End

Public Sub Slider1_Change()

  PaintText("Hallo", Slider1.value, PictureBox1.W / 2, PictureBox1.H / 2)

End

Re: wie einen Text diagonal in Grafik einfügen ?

Verfasst: Do 14. Okt 2021, 16:03
von cogier
Probieren Sie Ihren geänderten Code aus: -
gambas code
Private DrawingArea1 As DrawingArea

Public Sub Form_Open()

  With Me
    .W = 400
    .H = 400
    .Center
    .Arrangement = Arrange.Fill
  End With
  With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
    .X = 0
    .Y = 0
    .Background = Color.Orange
  End With

End

Public Sub DrawingArea1_Draw()

  With Paint
    .LineWidth = 10
    .LineTo(400, 400)
    .Stroke
    ' --- der Text ---
    .Translate(140, 100)
    .Rotate(Rad(315))
    .Brush = .Color(Color.Yellow)
    .LineWidth = 3
    .Font.Size = 75
    .Text("Gambas", 70, -65, 100, 100, Align.Center)
    '.Fill
    .Stroke
    .End
  End With

End

Re: wie einen Text diagonal in Grafik einfügen ?

Verfasst: Do 14. Okt 2021, 21:01
von vuott
cogier hat geschrieben:
Do 14. Okt 2021, 16:03
gambas code
    .Text("Gambas", .....etc.....
Das ist die naheliegendste Lösung; mein Beispiel wollte nur lehrreich und lehrreich sein.