Рисование произвольной графики - C#
Формулировка задачи:
Надо нарисовать простейшую кнопочку на форме через класс Graphics, но получается хрень...
в чем собственно проблема... если рисовать кнопку через метод OnPaint то рисуется все очень хорошо, полу прозрачный черный, как и должно быть, НО проблема в том что надо отслеживать если мышка попала в зону кнопки то она сменит цвет... поэтому приходиться в MouseMove создавать эл-т графики... в чем проблема? заливка происходит чисто черным цветом(не прозрачным) и на все окно формы, а не только там где надо... как это предотвратить?
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)); }
Решение задачи: «Рисование произвольной графики»
textual
Листинг программы
...// это обработчик прорисовки кнопки, он передает 2 параметра sender и e { Graphics gr = e.Graphics; // далее рисуешь на gr все что тебе нужно. } ...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д