private void Label_ViewOperation_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { _AdjustNow = false; _InteractiveManager.ViewOperationStop(); ((Label)sender).BackColor = (Geometry.CursorIsInControl((Label)sender) ? Me.RecommendColors.Button_DEC.ToColor() : Me.RecommendColors.Background_INC.ToColor()); ((Label)sender).Cursor = Cursors.Default; } }
private void Panel_Main_MouseMove(object sender, MouseEventArgs e) { if (_MousePressed) { RectangleF trackBarBounds = _TrackBarBounds; if (trackBarBounds.Width <= 0 || _Minimum == _Maximum) { _Value = _Minimum; } else { _Value = Math.Max(_Minimum, Math.Min(_Minimum + (Geometry.GetCursorPositionOfControl(Panel_Main).X - trackBarBounds.X) / trackBarBounds.Width * (_Maximum - _Minimum), _Maximum)); } _RepaintTrackBarImage(); _OnValueChanged(); } }
private void _UpdateTrackBarImage() { if (_TrackBarImage != null) { _TrackBarImage.Dispose(); } RectangleF wholeBounds = _WholeBounds; RectangleF trackBarBounds = _TrackBarBounds; _TrackBarImage = new Bitmap(Math.Max(1, (int)wholeBounds.Width), Math.Max(1, (int)wholeBounds.Height)); using (Graphics Grap = Graphics.FromImage(_TrackBarImage)) { Color meaningfulBackColor = _MeaningfulBackColor; // Grap.SmoothingMode = SmoothingMode.AntiAlias; Grap.Clear(meaningfulBackColor); // int ColorNum = (_Colors == null ? 0 : _Colors.Length); // RectangleF BarImgBounds = new RectangleF(trackBarBounds.Location, new SizeF(Math.Max(1, trackBarBounds.Width), Math.Max(1, trackBarBounds.Height))); // Color BarBorderColor = ColorManipulation.ShiftLightnessByHSL(meaningfulBackColor, -0.3); using (Pen Pn = new Pen(Color.FromArgb(64, BarBorderColor), 2)) { Grap.DrawRectangles(Pn, new RectangleF[] { new RectangleF(new PointF(BarImgBounds.X - 1, BarImgBounds.Y - 1), new SizeF(BarImgBounds.Width + 2, BarImgBounds.Height + 2)) }); } using (Pen Pn = new Pen(Color.FromArgb(128, BarBorderColor), 2)) { Grap.DrawRectangles(Pn, new RectangleF[] { BarImgBounds }); } using (Brush Br = new SolidBrush(meaningfulBackColor)) { Grap.FillRectangle(Br, BarImgBounds); } // if (ColorNum > 0) { if (ColorNum == 1) { using (SolidBrush Br = new SolidBrush(_Colors[0])) { Grap.FillRectangle(Br, BarImgBounds); } } else { SizeF SubImgSize = new SizeF(BarImgBounds.Width / (ColorNum - 1) + 0.5F, BarImgBounds.Height); for (int i = 1; i < ColorNum; i++) { RectangleF SubImgBounds = new RectangleF(new PointF(BarImgBounds.X + BarImgBounds.Width * (i - 1) / (ColorNum - 1), BarImgBounds.Y), SubImgSize); using (LinearGradientBrush Br = new LinearGradientBrush(new PointF(SubImgBounds.Left - 0.5F, SubImgBounds.Top), new PointF(SubImgBounds.Right + 0.5F, SubImgBounds.Top), _Colors[i - 1], _Colors[i])) { Grap.FillRectangle(Br, SubImgBounds); } } } } // if (Geometry.CursorIsInControl(Panel_Main) || _MousePressed) { using (Brush Br = new SolidBrush(Color.FromArgb(64, Color.White))) { Grap.FillRectangle(Br, BarImgBounds); } } // Color SliderBorderColor = ColorManipulation.ShiftLightnessByHSL(meaningfulBackColor, -0.6); Color SliderColor; if (ColorNum > 0) { if (ColorNum == 1) { SliderColor = _Colors[0]; } else { double Pct = (_Value - _Minimum) / (_Maximum - _Minimum); int ColorIndex = (int)Math.Ceiling(Pct * (ColorNum - 1)); if (ColorIndex == 0) { ColorIndex = 1; } double SubPct = (double)(ColorIndex - 1) / (ColorNum - 1); double Prop = (Pct - SubPct) * (ColorNum - 1); SliderColor = ColorManipulation.BlendByRGB(_Colors[ColorIndex], _Colors[ColorIndex - 1], Prop); } } else { SliderColor = meaningfulBackColor; } SliderColor = ColorManipulation.ShiftLightnessByHSL(SliderColor, +0.6); float SliderX = (_Minimum == _Maximum ? trackBarBounds.X : (float)(trackBarBounds.X + (_Value - _Minimum) / (_Maximum - _Minimum) * trackBarBounds.Width)); float SliderHeight = 0.2F * wholeBounds.Height; PointF[] PolygonTop = new PointF[] { new PointF(SliderX, wholeBounds.Y + 1 + SliderHeight), new PointF(SliderX - SliderHeight, wholeBounds.Y + 1), new PointF(SliderX + SliderHeight, wholeBounds.Y + 1) }; PointF[] PolygonBottom = new PointF[] { new PointF(SliderX, wholeBounds.Bottom - 1 - SliderHeight), new PointF(SliderX - SliderHeight, wholeBounds.Bottom - 1), new PointF(SliderX + SliderHeight, wholeBounds.Bottom - 1) }; using (Pen Pn = new Pen(Color.FromArgb(128, SliderBorderColor), 3)) { Grap.DrawLine(Pn, new PointF(SliderX, trackBarBounds.Y), new PointF(SliderX, trackBarBounds.Bottom)); } using (Pen Pn = new Pen(Color.FromArgb(128, SliderBorderColor), 2)) { Grap.DrawPolygon(Pn, PolygonTop); Grap.DrawPolygon(Pn, PolygonBottom); } using (Pen Pn = new Pen(SliderColor, 1)) { Grap.DrawLine(Pn, new PointF(SliderX, trackBarBounds.Y), new PointF(SliderX, trackBarBounds.Bottom)); } using (Brush Br = new SolidBrush(SliderColor)) { Grap.FillPolygon(Br, PolygonTop); Grap.FillPolygon(Br, PolygonBottom); } } }