Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C#] Tracciare linea su Form e su PictureBox

    Ciao a tutti, so che è come cercare un ago in un pagliaio ma ho il seguente codice che permette di tracciare correttamente una Linea su una Form:
    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace testLINEinC
    {
    public partial class Form1 : Form
    {

    private ArrayList Lines = new ArrayList();
    private Point EndPoint;
    private Point StartPoint;

    private struct Line
    {

    public Point StartPos;

    public Point EndPos;

    public Line(Point pt1, Point pt2)
    {
    StartPos = pt1;
    EndPos = pt2;
    }
    }


    public Form1()
    {
    InitializeComponent();
    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
    Invalidate();
    }

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
    if ((e.Button == MouseButtons.Left))
    {
    StartPoint = new Point(e.X, e.Y);
    }
    }

    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
    if ((e.Button == MouseButtons.Left))
    {
    EndPoint = new Point(e.X, e.Y);
    Lines.Add(new Line(StartPoint, EndPoint));
    }
    }

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
    foreach (Line Item in Lines)
    {
    e.Graphics.DrawLine(Pens.Blue, Item.StartPos, Item.EndPos);
    }

    if ((Control.MouseButtons == MouseButtons.Left))
    {
    e.Graphics.DrawLine(Pens.Blue, StartPoint, this.PointToClient(Cursor.Position));
    }
    }
    }
    }

    funziona perfettamente su una Form come area di lavoro, non capisco perchè se ci metto una pictureBox come area di lavoro invece non funziona....
    O meglio, tracci una una linea e non compare nulla... riduci a icona la form, la ingrandisci e magicamente la linea sulla PictureBox c'è.... come mai questo strano comportamento?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    perchè devi sostituire gli eventi della form con quelli della pbox...soprattutto l'evento paint, ma mi pare anche abbastanza evidente.

    Non a caso quando la form viene ridisegnata(quando la riporti in primo piano) la linea magicamente appare.

    hint: puoi forzare l'evento repaint da qualsiasi parte del codice, ma non esagerare che sennò diventa l'applicazione più semplice e più pesante della storia
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

  3. #3
    Originariamente inviato da vaitrafra
    perchè devi sostituire gli eventi della form con quelli della pbox...soprattutto l'evento paint, ma mi pare anche abbastanza evidente.

    Non a caso quando la form viene ridisegnata(quando la riporti in primo piano) la linea magicamente appare.
    Certo che ho sostituito gli eventi della Form con quelli della PictureBox....
    ma il problema resta lo stesso....

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    hai provato a amettere dei rapaint in giro?
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

  5. #5
    L'evento repaint? Non lo conosco.... A quale classe appartiene?

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    E' un bel po' che non tocco .NET, non è un'evento, è un metodo che dovrebbe essere associato a molti controlli .NET... se non è repaint è refresh.
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.