123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- using System;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.Windows.Forms;
- using FastReport.DevComponents.DotNetBar;
- using FastReport.Utils;
- namespace FastReport.Controls
- {
- internal class LineStyleButtonItem : ButtonItem
- {
- private LineStyle lineStyle;
- private ItemContainer container;
- public event EventHandler StyleSelected;
- bool isOpen = false;
- public LineStyle LineStyle
- {
- get { return lineStyle; }
- set
- {
- lineStyle = value;
- foreach (BaseItem item in container.SubItems)
- {
- (item as ButtonItem).Checked = (LineStyle)(item as ButtonItem).Tag == value;
- }
- }
- }
- private void AddSubItem(LineStyle style)
- {
- ButtonItem item = new ButtonItem();
- Control owner = ContainerControl as Control;
- if (owner == null)
- return;
- Bitmap bmp = new Bitmap(owner.LogicalToDevice(88), owner.LogicalToDevice(14));
- using (Graphics g = Graphics.FromImage(bmp))
- {
- using (Pen pen = new Pen(Color.Black, owner.LogicalToDevice(2)))
- {
- DashStyle[] styles = new DashStyle[] {
- DashStyle.Solid, DashStyle.Dash, DashStyle.Dot, DashStyle.DashDot, DashStyle.DashDotDot, DashStyle.Solid };
- pen.DashStyle = styles[(int)style];
- if (style == LineStyle.Double)
- {
- pen.Width = owner.LogicalToDevice(5);
- pen.CompoundArray = new float[] { 0, 0.4f, 0.6f, 1 };
- }
- g.DrawLine(pen, owner.LogicalToDevice(4), owner.LogicalToDevice(7),
- owner.LogicalToDevice(84), owner.LogicalToDevice(7));
- }
- }
- item.Image = bmp;
- item.Tag = style;
- item.Checked = style == lineStyle;
- item.Click += item_Click;
- container.SubItems.Add(item);
- }
- private void item_Click(object sender, EventArgs e)
- {
- lineStyle = (LineStyle)(sender as ButtonItem).Tag;
- (sender as ButtonItem).Checked = true;
- if (StyleSelected != null)
- StyleSelected(this, EventArgs.Empty);
- }
- protected override void OnPopupClose(EventArgs e)
- {
- base.OnPopupClose(e);
- isOpen = false;
- }
- public override void InternalMouseDown(MouseEventArgs objArg)
- {
- isOpen = !isOpen;
- container.SubItems.Clear();
- UpdateItems();
- Expanded = isOpen;
- }
- private void UpdateItems()
- {
- AddSubItem(LineStyle.Solid);
- AddSubItem(LineStyle.Dash);
- AddSubItem(LineStyle.Dot);
- AddSubItem(LineStyle.DashDot);
- AddSubItem(LineStyle.DashDotDot);
- AddSubItem(LineStyle.Double);
- }
- public override void UpdateDpiDependencies()
- {
- base.UpdateDpiDependencies();
- container.SubItems.Clear();
- UpdateItems();
- }
- public LineStyleButtonItem()
- {
- container = new ItemContainer();
- container.LayoutOrientation = eOrientation.Vertical;
- SubItems.Add(container);
- PopupType = ePopupType.ToolBar;
- UpdateItems();
- }
- }
- }
|