using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace ryPrint.Mod
{
    public partial class myLabel : UserControl
    {
        public myLabel()
        {
            InitializeComponent();
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
            this.DoubleBuffered = true;
            this.BorderStyle = BorderStyle.FixedSingle;
            
        }
        public void SetAlign(string align)
        {
            switch (align)
            {
                case "Left":
                   Property.Align = HorizontalAlignment.Left;
                    break;
                case "Right":
                    Property.Align = HorizontalAlignment.Right;
                    break;
                case "Center":
                    Property.Align = HorizontalAlignment.Center;
                    break;
                default:
                    Property.Align = HorizontalAlignment.Left;
                    break;
            }
        }
        public string AlignStr
        {
            get
            {
                switch (Property.Align)
                {
                    case HorizontalAlignment.Left:
                        return "Left";
                    case HorizontalAlignment.Right:
                        return "Right"; 
                    case HorizontalAlignment.Center:
                        return "Center";
                    default:
                        return "Left";

                }
            }
        }
        private ClsProperty _Property=new ClsProperty();
        public ClsProperty Property
        {
            get
            {
                _Property.Size = new SizeF(RySet.Pixeltomm(this.Size.Width), RySet.Pixeltomm(this.Size.Height));
                _Property.Postion = new PointF(RySet.Pixeltomm(this.Location.X), RySet.Pixeltomm(this.Location.Y));
                _Property.FontSize = this.Font.Size;
                return _Property;
            }

            set
            {
                _Property = value;
                this.Font = new Font(this.Font.FontFamily, _Property.FontSize);
                //this.Size=_Property.Size;
                //this.Location = _Property.Postion;
                Refresh();
            }
        }
        private void myLabel_Load(object sender, EventArgs e)
        {

        }

        private void myLabel_Paint(object sender, PaintEventArgs e)
        {
            StringFormat sf = new StringFormat();
            e.Graphics.PageUnit = GraphicsUnit.Pixel;
            if (Property.Multiline)
            {
                Brush fontBrush = SystemBrushes.ControlText;
                //sf.Alignment = StringAlignment.Center;
                //sf.LineAlignment = StringAlignment.Center;
                RectangleF rect = new RectangleF(new PointF(0, 0), this.Size);
                e.Graphics.DrawString(Property.Title, this.Font, fontBrush, rect, sf);
            }
            else
            {
                switch (Property.Align)
                {
                    case HorizontalAlignment.Left:
                        sf.Alignment = StringAlignment.Near;
                        break;
                    case HorizontalAlignment.Right:
                        sf.Alignment = StringAlignment.Far;
                        break;
                    case HorizontalAlignment.Center:
                        sf.Alignment = StringAlignment.Center;
                        break;
                }
                //sf.LineAlignment = sf.Alignment;
                this.Height = (int)e.Graphics.MeasureString(Property.Title, this.Font).Height;
                if (sf.Alignment == StringAlignment.Center || sf.Alignment == StringAlignment.Far)
                {
                    RectangleF rect = new RectangleF(new PointF(0, 0), new Size(Width,Height));
                    sf.LineAlignment = sf.Alignment;
                    e.Graphics.DrawString(Property.Title, this.Font, Brushes.Black, rect, sf);
                }
                else
                {
                    e.Graphics.DrawString(Property.Title, this.Font, Brushes.Black, new PointF(0, 0));
                }
            }
        }

        private void myLabel_Resize(object sender, EventArgs e)
        {
        }
    }
}
