Új hozzászólás Aktív témák

  • Zalanius

    tag

    válasz BTminishop #8017 üzenetére

    Ehhez előbb a Click eventet elfogni képes elemre van szükség. Többféleképpen is neki lehet vágni, ha mindenképpen szeretnél egy mátrixot, akkor azt fel lehet építeni pictureBox vagy hasonló elemekből is, és akkor a tömb minden eleméhez hozzárendelhető egy metódus rajzolási célból.

    De itt akár mellőzhetők is a tömbök, ha "canvas" céljából egy pictureBoxot vagy hasonlót alkalmazunk, és a kattintás koordinátáiból állapítod meg utána, hogy a sakktábla melyik mezőjére kell rajzolni. Tegyük fel, hogy adott egy 400*400 pixeles pictureBox (pb), meg valahol a fájlrendszerben egy kép tesztelésre (queen_41.png), ekkor vázlatosan:

    const int WIDTH = 50;
    const int SIZE = 8;
    const int IMGSIZE = 41;
    const string IMGPATH = @"T:\queen_41.png";

    public Form1()
    {
    InitializeComponent();
    pb.MouseClick += Pb_MouseClick;
    }

    private void button1_Click(object sender, EventArgs e)
    {
    Graphics g = pb.CreateGraphics();
    for (int i = 0; i < SIZE; i++)
    {
    for (int j = 0; j < SIZE; j++)
    {
    g.FillRectangle((i + j) % 2 == 0 ? Brushes.White : Brushes.Black, i * WIDTH, j * WIDTH, WIDTH, WIDTH);
    }
    }
    }

    private void Pb_MouseClick(object sender, MouseEventArgs e)
    {
    float x, y;
    x = e.X - (e.X % WIDTH) + (WIDTH - IMGSIZE) / 2;
    y = e.Y - (e.Y % WIDTH) + (WIDTH - IMGSIZE) / 2;
    Graphics g = pb.CreateGraphics();
    g.DrawImage(Image.FromFile(IMGPATH), x, y);
    }

    [ Szerkesztve ]

    --= Zalán =--

Új hozzászólás Aktív témák