Рисование произвольной графики - C#

Узнай цену своей работы

Формулировка задачи:

Надо нарисовать простейшую кнопочку на форме через класс Graphics, но получается хрень...
private void TestForm_MouseMove(object sender, MouseEventArgs e)
        {
BufferedGraphics bg = CurrentContext.Allocate(this.CreateGraphics(), this.ClientRectangle);
        bg.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
        SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(100, 0, 0, 0)); // Черный полпурозрачный
        BufferedGraphicsContext CurrentContext = BufferedGraphicsManager.Current;
        GraphicButton grbut = new GraphicButton(100, 10, 150, 40, "ЫЫЫЫ");
        Font fnt = new Font("Times New Roman", 15);
        this.DrawButton(grbut, fnt, true, bg.Graphics);
        bg.Render();
}
 
public void DrawButton(GraphicButton button, Font fnt, bool SelectOnMoveOrClick, Graphics g)
        {
            
            if (SelectOnMoveOrClick)
                button.Selected(MouseX, MouseY); // Вызываем фунцкию проверки наведения на кнопку 
 
            g.FillRectangle(semiTransBrush, button.X, button.Y, button.Width, button.Height);
            g.DrawRectangle(new Pen(button.BrushNow), button.X, button.Y, button.Width, button.Height);
            g.DrawString(button.Text, fnt, button.BrushNow, new Point(button.Width / 2 - ((int)(fnt.Size / 2) * button.Text.Length) + button.X - 10, button.Y + button.Height / 2 - fnt.Height / 2));
        }
в чем собственно проблема... если рисовать кнопку через метод OnPaint то рисуется все очень хорошо, полу прозрачный черный, как и должно быть, НО проблема в том что надо отслеживать если мышка попала в зону кнопки то она сменит цвет... поэтому приходиться в MouseMove создавать эл-т графики... в чем проблема? заливка происходит чисто черным цветом(не прозрачным) и на все окно формы, а не только там где надо... как это предотвратить?

Решение задачи: «Рисование произвольной графики»

textual
Листинг программы
...// это обработчик прорисовки кнопки, он передает 2 параметра sender и e
{
Graphics gr = e.Graphics;
// далее рисуешь на gr все что тебе нужно.
}
...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.533 из 5
Похожие ответы