Kirjoittaja: tnb
Kirjoitettu: 11.03.2004 – 11.03.2004
Tagit: koodi näytille, vinkki
Demo jossa näytetään miten viivan raahaaminen tapahtuu.
'*********************************************** ' Viivan raahaus demo ' TNB 2004, vb.net '*********************************************** Dim Polku As System.Drawing.Drawing2D.GraphicsPath Dim ViivanAlku As Point = New Point(10, 40) Dim ViivanLoppu As Point = New Point(50, 80) Dim Kynä As Pen = New Pen(Color.Black, 3.0) Dim g As Graphics Dim raahaa As Boolean Dim alkux As Integer Dim alkuy As Integer Dim alkux1, alkux0, alkuy1, alkuy0 As Integer Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown Dim mp As Point = New Point(e.X, e.Y) If Me.Polku.IsOutlineVisible(mp, Me.Kynä) Then 'hiiri on viivan päällä ja nappi alhaalla 'lähtö paikka muistiin alkux = e.X alkuy = e.Y raahaa = True ' raahaus lippu päälle alkux0 = Me.ViivanAlku.X alkuy0 = Me.ViivanAlku.Y alkux1 = Me.ViivanLoppu.X alkuy1 = Me.ViivanLoppu.Y Else 'hiiri ohi g.DrawPath(Me.Kynä, Me.Polku) End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'tehdään instanssi ja luodaan eka viiva Me.Polku = New System.Drawing.Drawing2D.GraphicsPath Me.Polku.AddLine(Me.ViivanAlku, Me.ViivanLoppu) End Sub Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove g = Me.CreateGraphics If raahaa Then 'raahaus tapahtuma Me.Polku.Reset() 'vanha data pois g.Clear(Color.White) 'pohja valkoiseksi, vanha viiva pois Me.ViivanLoppu = New Point(alkux0 + (e.X - alkux), alkuy0 + (e.Y - alkuy)) Me.ViivanAlku = New Point(alkux1 + (e.X - alkux), alkuy1 + (e.Y - alkuy)) Me.Polku.AddLine(Me.ViivanAlku, Me.ViivanLoppu) 'uuden viivan lisäys g.DrawPath(Me.Kynä, Me.Polku) 'piirto End If End Sub Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp raahaa = False ' raahaaminen loppu End Sub Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint g = Me.CreateGraphics g.Clear(Color.White) 'pohja valkoiseksi g.DrawPath(Me.Kynä, Me.Polku) 'näytä eka viiva Me.Text = "Raahaa hiirellä viivaa" End Sub
Et vaan osaa? :-}
Olisko exee kellään...?
Heh, jos ei oo VB.NET ni ei ehkä sitte...
VB.NET on suoraa sanottuna ihan eri ohjelmointikieli. Mä käytän ainaki kunnon VB6:ta ja Visual C++ 6:ta..
Toimii erinomaisesti, itseasiassa en ollut koskaan ennen tätä kääntänyt visual basic ohjelmaa, joten sen kunniaksi julkaisen ohjelman exen joka löytyy rar-pakettina osoitteesta. http://ameba.lpt.fi/~seppsami/mobiilifilu/
iha pärseestä ku toi ei toimi
Hyvin toimii. Tätähän pystyy soveltamaan vaikka missä.
Tässä peni sovellus asiasta, eli piirtää kasan punaisia viivoja.
Public Class Kuormitus Dim Polku1 As System.Drawing.Drawing2D.GraphicsPath Dim AS1a As Point = New Point(79, 35) Dim As1l As Point = New Point(79, 45) Dim Polku2 As System.Drawing.Drawing2D.GraphicsPath Dim AS2a As Point = New Point(132, 35) Dim As2l As Point = New Point(132, 45) Dim Polku3 As System.Drawing.Drawing2D.GraphicsPath Dim AS3a As Point = New Point(185, 35) Dim As3l As Point = New Point(185, 45) Dim Polku4 As System.Drawing.Drawing2D.GraphicsPath Dim AS4a As Point = New Point(238, 35) Dim As4l As Point = New Point(238, 45) Dim Kynä As Pen = New Pen(Color.Red, 45.0) Dim g As Graphics Private Sub Kuormitus_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim p As String p = Application.StartupPath & "\" FileOpen(1, p & "klo.set", OpenMode.Input) Input(1, Label1.Text) Input(1, Label2.Text) Input(1, Label3.Text) Input(1, Label4.Text) FileClose() Me.Polku1 = New System.Drawing.Drawing2D.GraphicsPath Me.Polku1.AddLine(Me.AS1a, Me.As1l) Me.Polku2 = New System.Drawing.Drawing2D.GraphicsPath Me.Polku2.AddLine(Me.AS2a, Me.As2l) Me.Polku3 = New System.Drawing.Drawing2D.GraphicsPath Me.Polku3.AddLine(Me.AS3a, Me.As3l) Me.Polku4 = New System.Drawing.Drawing2D.GraphicsPath Me.Polku4.AddLine(Me.AS4a, Me.As4l) End Sub Private Sub Kuormitus_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint g = Me.CreateGraphics g.DrawPath(Me.Kynä, Me.Polku1) g.DrawPath(Me.Kynä, Me.Polku2) g.DrawPath(Me.Kynä, Me.Polku3) g.DrawPath(Me.Kynä, Me.Polku4) End Sub End Class
Siskohan tuohon load tapahtumaan ujutettua värin vaihdon esim.
Jos luetaan tiedostosta jokin arvo joka vastaisi toista väriä,
yritin tuota " Dim Kynä As Pen = New Pen(Color.Red, 45.0)"
lausetta laittaa loadiin mutta eihän se siellä viihdy.