Bonjour,
avec le code suivant je veux tout betement tracer une ligne dans une PictureBox, soit en style "Solid" avec le bouton1, soit en style "pointille" avec le bouton2.
Je veux egalement que ce graphique soit persistant meme si il est recouvert momentanement par une autre fenetre par exemple. C'est pourquoi j'utilise 'Invalidate' qui, si j'ai bien compris, force le retracage du controle vise.
Il y a 2 choses que je ne comprends pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Imports System.Drawing Public Class Form1 Dim Crayon As Pen = New Pen(Color.Black) Public g As Graphics Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load g = Graphics.FromHwnd(Me.PictureBox1.Handle) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Crayon.DashStyle = Drawing2D.DashStyle.Solid PictureBox1.Invalidate() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Crayon.DashStyle = Drawing2D.DashStyle.Dot PictureBox1.Invalidate() End Sub Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint, Me.Paint g.DrawLine(Crayon, 10, 10, 100, 100) End Sub End Class
1/ Je suis oblige d'ajouter 'Me.Paint' dans les Handles de l'evenement PictureBox1_Paint pour voir ma ligne, du coup celle ci est tracee des le demarrage de la feuille ce que je ne veux pas et je pensais que le Handle PictureBox1.Paint suffisait mais visiblement non, pourquoi ?
2/ Si je clique sur le bouton 1 ou 2, ma ligne est effacee mais n'est pas retracee tant que le curseur de souris est au dessus du bouton sur lequel je viens de cliquer. Pqreil, si jappuis sur la touche 'Entree' quand un bouton a le focus, je dois ensuite taper Tabulation pour donner le focus a l'autre bouton pour que la ligne soit tracee, la encore : pourquoi et y a t'il un moyen de corriger ce probleme ?
Merci par avance pour votre aide.
Partager