Краска полигона уже нарисована

c4rlos96 спросил: 14 ноября 2017 в 06:59 в: c#

Я пытаюсь сделать пользовательский контроль громкости (только пользовательский интерфейс). У меня все работает, кроме случаев, когда полоса опускается ниже 50% изображения. Ширина (которая равна 100) Я хочу, чтобы цвет треугольника изменился, например с красного на зеленый. Три строки, прокомментированные в событии mouseMove, - это то, чего я хочу достичь, но это не сработает. Заранее спасибо.

Это пример моего элемента управления:

Пока мой код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows;namespace ControlAudio
{
    public partial class volumen: UserControl
    {
        Bitmap im_soundOn = Properties.Resources.sound_on;
        Bitmap im_soundOff = Properties.Resources.sound_off;
        int coordenadaX;
        bool barClicked = false;
        bool muted = false;        public volumen()
        {
            InitializeComponent();        }
        //Dibujar triangulo
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            var g = e.Graphics;
            var points = new PointF[] { new PointF(0, 0), new PointF(1, 0), new PointF(0, 1) };            var mx = g.Transform.Clone();            g.TranslateTransform(100f, 100f);
            g.ScaleTransform(-135f, -70f);
            g.FillPolygon(Brushes.Olive, points);
            g.Transform = mx;
        }        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            barClicked = true;
        }        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            barClicked = false;
        }        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            MouseEventArgs me = (MouseEventArgs)e;
            Point coordenadasNuevas = me.Location;
            coordenadaX = coordenadasNuevas.X;            if(barClicked && pictureBox1.Width <= 100)
            {
                if (coordenadaX > 100)
                {
                    coordenadaX = 100;
                }
                pictureBox1.Width = coordenadaX;
            }            //When it reaches 0
            if (pictureBox1.Width == 0) {
                pictureBox1.Width = 0;
                muted = true;
                pb_imagen.Image = im_soundOff;
            }
            else //When it goes over 0
            {
                muted = false;
                pb_imagen.Image = im_soundOn;
            }            //if(pictureBox1.Width <= 50) g.FillPolygon(Brushes.Olive, points);
            //if(pictureBox1.Width >50 && pictureBox1.Width <= 90) g.FillPolygon(Brushes.Yellow, points);
            //if (pictureBox1.Width > 90) g.FillPolygon(Brushes.Red, points);        }    
    }
}

0 ответов