Gå til innhold

Grafiske figurer i en form


Anbefalte innlegg

Hei igjen

 

Er det absolutt ikke mulig å designe en FORM med firkanter, sirkler og streker lenger?

 

Vet at jeg kan tegne runtime, men skulle gjerne designet i FORM editoren.

 

Hvis ikke, hva er årsaken til at alt dette er borte? Først forsvinner transpent på labels og nå grafikk?!?!? Hva skjer? Er dette fordi det skal være WEB kompatibelt på en eller annen måte?

 

 

Ole

Lenke til kommentar
Videoannonse
Annonse

Like greit, det er veldig enkelt å tegne ting runtime, grafikk objektene var helt ubrukelige spør du meg

 

Men du kan legge til dette selv med UserControls, det er fort gjort.

Det er nok gjort sånn fordi det grafikk objektene i VB6 ikke er systemobjekter, men noe som er unikt fior Visual Basic.

 

Dessuten, hvis du bruker Overrides OnPaint, eller Paint event, kan du tegne hva du vil, og grafikk biblioteket er veldig forseggjort (meste av GDI+ er implementert, bortsett fra effect tror jeg)

Lenke til kommentar
Like greit, det er veldig enkelt å tegne ting runtime, grafikk objektene var helt ubrukelige spør du meg

 

Men du kan legge til dette selv med UserControls, det er fort gjort.

Det er nok gjort sånn fordi det grafikk objektene i VB6 ikke er systemobjekter, men noe som er unikt fior Visual Basic.

 

Dessuten, hvis du bruker Overrides OnPaint, eller Paint event, kan du tegne hva du vil, og grafikk biblioteket er veldig forseggjort (meste av GDI+ er implementert, bortsett fra effect tror jeg)

7094115[/snapback]

 

Høres bra ut. Skel sjekke opp dette. Grunnen til at jeg bruker disse er fordi jeg da kan lage et litt "penere" grensesnitten det trauste standardgreie som er i Windows. Visuellt er det mye penere å legge entry kontroller på en firkan med avrundede hjørner og som muligens har en flike på oversiden med informativ tekst. Kan sammenlignes med en GROUPbox kontroll, men ser mye freskere ut. Enkel å bygge opp er den også. To fylte bokser og to fyllte sirkler og vips så er den på plass. Nå er jo alternativet å tegne den i Photoshop og plassere på skjerm. Men hvis det du sier er enkelt så er jo det like greit. hmm.... UserControls sier du......den må jeg sjekke...

 

 

Ole

Lenke til kommentar
Hvis du trenger en simpel strek, kan man bruke et Panel for så å sette bredden/høyden til 1. Mye juks, men det er mulig å gjøre... ;)

7095381[/snapback]

Greit nok, men den vil kunn være horisontal og diagonal, men joda. Det blir en strek av det.

 

Jeg var mere ute etter avrundede hjørner etc.

 

Ole

Lenke til kommentar

Her har du litt grafikk for en groupbox, lan en ny Class, og fyll inn dette istedet, og compile.

 

Imports System.Drawing

Public Class AwsomeGroupBox
Inherits System.Windows.Forms.ContainerControl
Protected m_text As String

Protected m_path As System.Drawing.Drawing2D.GraphicsPath
Protected m_caption As System.Drawing.Drawing2D.GraphicsPath
Protected m_caption_size As SizeF
Protected m_brush As System.Drawing.Brush
Protected m_pen As Pen

Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
 m_path = New System.Drawing.Drawing2D.GraphicsPath()

 m_path.AddLine(m_caption_size.Width + 48, 9, Me.Size.Width - 20, 9)
 m_path.AddArc(Me.Size.Width - 20, 9, 18, 18, -90, 90)	' Legg til alle fire hjørnene, de vil bli koplet med en linje.
 m_path.AddArc(Me.Size.Width - 20, Me.Size.Height - 20, 18, 18, -0, 90)
 m_path.AddArc(2, Me.Size.Height - 20, 18, 18, 90, 90)
 m_path.AddArc(2, 9, 18, 18, 180, 90)

 m_caption = New System.Drawing.Drawing2D.GraphicsPath()

 m_caption.AddArc(12, 2, 18, 18, 90, 180)
 m_caption.AddArc(m_caption_size.Width + 30, 2, 18, 18, -90, 180)
 m_caption.CloseFigure()
 If Not m_caption_size = SizeF.Empty Then
 	m_brush = New System.Drawing.Drawing2D.LinearGradientBrush(New Rectangle(0, 2, m_caption_size.Width, 18), Color.AliceBlue, Color.GreenYellow, Drawing2D.LinearGradientMode.Vertical)
 End If
 m_pen = New Pen(New System.Drawing.Drawing2D.LinearGradientBrush(New Rectangle(0, 0, Me.Size.Width, Me.Size.Height), Color.SlateGray, Color.Black, Drawing2D.LinearGradientMode.Vertical), 2.7F)


End Sub

<System.ComponentModel.Browsable(True)> Public Overrides Property Text() As String
 Get
 	Return m_text
 End Get
 Set(ByVal value As String)
 	m_text = value
 	m_caption_size = CreateGraphics().MeasureString(value, MyBase.Font, 0)
 	Invalidate()
 	OnResize(Nothing)
 End Set
End Property

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
 e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
 e.Graphics.DrawPath(m_pen, m_path)
 If (m_brush Is Nothing) Then

 Else
 	e.Graphics.FillPath(m_brush, m_caption)
 End If
 e.Graphics.FillPath(m_brush, m_caption)
 e.Graphics.DrawPath(m_pen, m_caption)
 e.Graphics.DrawString(m_text, MyBase.Font, SystemBrushes.ControlText, 18, 4)
End Sub

End Class

 

og du vil få en ekstra usercontrol.

Lenke til kommentar
Her har du litt grafikk for en groupbox, lan en ny Class, og fyll inn dette istedet, og compile.

...

og du vil få en ekstra usercontrol.

7098268[/snapback]

 

DAMN!!!!

 

Fikk noen feilmeldinger etc. Men fikset det enkelt!! STEIKE! Dette er GROMME greier!! At man kan dra en "user control" ut på skjermen og se kontrollen Designtime er jo bare sinnsykt bra!!

 

Dette kaller RAD!

 

Ole

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...