示例#1
0
        public static void RedrawList()
        {
            _listView.SafeAction(s => s.Items.Clear());

            foreach (OverheadMessage message in OverheadMessages)
            {
                ListViewItem item = new ListViewItem($"{message.SearchMessage}");
                item.SubItems.Add(new ListViewItem.ListViewSubItem(item, message.MessageOverhead));

                int hueIdx = message.Hue;

                if (hueIdx > 0 && hueIdx < 3000)
                {
                    item.SubItems[1].BackColor = Hues.GetHue(hueIdx - 1).GetColor(HueEntry.TextHueIDX);
                }
                else
                {
                    item.SubItems[1].BackColor = SystemColors.Control;
                }

                item.SubItems[1].ForeColor =
                    (item.SubItems[1].BackColor.GetBrightness() < 0.35 ? Color.White : Color.Black);

                item.UseItemStyleForSubItems = false;

                _listView.SafeAction(s => s.Items.Add(item));
            }
        }
示例#2
0
        public static void SetOverheadHue()
        {
            ListViewItem selectedItem = _listView.Items[_listView.SelectedIndices[0]];

            HueEntry h = new HueEntry(GetHue(selectedItem.SubItems[1].Text));

            if (h.ShowDialog(Engine.MainWindow) == DialogResult.OK)
            {
                int hueIdx = h.Hue;

                if (hueIdx > 0 && hueIdx < 3000)
                {
                    selectedItem.SubItems[1].BackColor = Hues.GetHue(hueIdx - 1).GetColor(HueEntry.TextHueIDX);
                }
                else
                {
                    selectedItem.SubItems[1].BackColor = Color.White;
                }

                selectedItem.SubItems[1].ForeColor = (selectedItem.SubItems[1].BackColor.GetBrightness() < 0.35
                    ? Color.White
                    : Color.Black);

                foreach (OverheadMessage list in OverheadManager.OverheadMessages)
                {
                    if (list.SearchMessage.Equals(selectedItem.Text))
                    {
                        list.Hue = hueIdx;
                        break;
                    }
                }
            }
        }
示例#3
0
        public ActionResult GumpArt(int id, int hue = 0)
        {
            DeleteTempFiles(System.Web.HttpContext.Current);
            Files.SetMulPath(HttpContext.Server.MapPath("~/mul"));
            Bitmap bmp;

            if (hue > 0 && hue <= 3000)
            {
                bool patched;
                bmp = new Bitmap(Gumps.GetGump(id, Hues.GetHue(hue), false, out patched));
            }
            else
            {
                bmp = new Bitmap(Gumps.GetGump(id));
            }

            byte[] byteArray = ImageToByte(bmp);

            using (Image image = Image.FromStream(new MemoryStream(byteArray)))
            {
                image.Save(HttpContext.Server.MapPath("~/tempfiles/") + id + hue + ".png", ImageFormat.Png);
            }

            ViewBag.img = "/tempfiles/" + id + hue + ".png";
            return(File(HttpContext.Server.MapPath("~/tempfiles/") + id + hue + ".png", "image/png"));
        }
示例#4
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            if (value == null)
            {
                value = Hues.GetHue(0);
            }

            if (value.GetType() == typeof(Hue))
            {
                editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));

                if (editorService == null)
                {
                    return(value);
                }

                HuePickerControl control = new HuePickerControl((Hue)value);
                control.ValueChanged += new HuePickerControl.ValueChangedEventHandler(this.ValueSelected);
                editorService.DropDownControl(control);

                if (returnValue != null)
                {
                    control.Dispose();
                    return(returnValue);
                }

                control.Dispose();
            }

            return(value);
        }
示例#5
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            if (value == null)
            {
                value = Hues.GetHue(0);
            }

            if (!(value is Hue hue))
            {
                return(value);
            }

            edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));

            if (edSvc == null)
            {
                return(value);
            }

            HuePickerControl huePickerControl = new HuePickerControl(hue);

            huePickerControl.ValueChanged += new HuePickerControl.ValueChangedEventHandler(ValueSelected);

            edSvc.DropDownControl(huePickerControl);
            if (ReturnValue != null)
            {
                huePickerControl.Dispose();
                return(ReturnValue);
            }
            huePickerControl.Dispose();
            return(value);
        }
示例#6
0
        private bool?Event_UnicodeMessage(Serial serial, ItemID graphic, byte type, ushort hue, ushort font, string lang, string name, string msg)
        {
            if ((type == 0 && hue == 0x34 && msg == "zZz") ||
                (type == 2 && hue == 0x225 && msg.StartsWith("*is AFK (") && msg.EndsWith(")*")))
            {
                return(null);
            }

            if (type == 0x0D)
            {
                textBox.AddLine(string.Format("[G] {0}: {1}", name, msg), guildColor);
            }
            else if (type != 0x0A && hue != 0x03B2)
            {
                if (name == "System")
                {
                    if ((msg.StartsWith("Z herbare bylo vyjmuto") ||
                         (msg.StartsWith("Kolik") && msg.EndsWith("chces vybrat?")) ||
                         msg.EndsWith("bylo vlozeno do herbare.")) &&
                        hue == 0x55C)
                    {
                        return(null);
                    }
                    textBox.AddLine(string.Format("[¤] {0}", msg), Hues.GetHue(hue).GetColor(30));
                }
                else if (lang != "ENU")
                {
                    textBox.AddLine(string.Format("{0}: {1}", name, msg), Hues.GetHue(hue).GetColor(30));
                }
            }
            return(null);
        }
示例#7
0
 public TiledElement(int GumpID)
 {
     this.DoingRenderRetry = false;
     this.mHue             = Hues.GetHue(0);
     this.GumpID           = GumpID;
     this.mSize            = this.mTileSize;
 }
示例#8
0
 private bool?Event_ASCIIMessage(Serial serial, ItemID graphic, byte type, ushort hue, ushort font, string lang, string name, string msg)
 {
     if (name == "System" && hue != 0x018B)
     {
         textBox.AddLine(string.Format("[×] {0}", msg), Hues.GetHue(hue).GetColor(30));
     }
     return(null);
 }
示例#9
0
 public virtual void Deserialize(XmlReader reader)
 {
     hue      = Hues.GetHue(XmlConvert.ToInt32(reader.GetAttribute("hue")));
     index    = XmlConvert.ToInt32(reader.GetAttribute("index"));
     z        = XmlConvert.ToInt32(reader.GetAttribute("z"));
     location = new Point(XmlConvert.ToInt32(reader.GetAttribute("x")), XmlConvert.ToInt32(reader.GetAttribute("y")));
     size     = new Size(XmlConvert.ToInt32(reader.GetAttribute("width")), XmlConvert.ToInt32(reader.GetAttribute("height")));
 }
 public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
 {
     if (Versioned.IsNumeric((object)Conversions.ToString(value)))
     {
         return((object)Hues.GetHue(Conversions.ToInteger(value)));
     }
     return((object)Hues.GetHue(HexHelper.HexToDec(Conversions.ToString(value))));
 }
示例#11
0
 public ItemElement(SerializationInfo info, StreamingContext context)
     : base(info, context)
 {
     info.GetInt32("ItemElementVersion");
     this.mItemID = info.GetInt32(nameof(ItemID));
     this.mHue    = Hues.GetHue(info.GetInt32("HueIndex"));
     this.RefreshCache();
 }
示例#12
0
        protected TiledElement(SerializationInfo info, StreamingContext context) : base(info, context)
        {
            this.DoingRenderRetry = false;
            this.mHue             = Hues.GetHue(0);
            int int32 = info.GetInt32("TiledElementVersion");

            this.GumpID = info.GetInt32(nameof(GumpID));
            this.mHue   = int32 < 2 ? Hues.GetHue(0) : Hues.GetHue(info.GetInt32("HueIndex"));
            this.RefreshCache();
        }
示例#13
0
        private void setOverheadMessage_Click(object sender, EventArgs e)
        {
            int    hueIdx      = Config.GetInt("SysColor");
            string newItemText = string.Empty;

            if (string.IsNullOrEmpty(cliLocTextSearch.Text))
            {
                return;
            }

            if (cliLocSearchView.SelectedItems.Count > 0)
            {
                ListViewItem selectedItem = cliLocSearchView.SelectedItems[0];
                newItemText = selectedItem.SubItems[1].Text;
            }
            else
            {
                newItemText = cliLocTextSearch.Text;
            }

            ListViewItem item = new ListViewItem(newItemText);

            if (InputBox.Show(this,
                              "Enter text to display overhead",
                              newItemText))
            {
                string overheadMessage = InputBox.GetString();

                item.SubItems.Add(new ListViewItem.ListViewSubItem(item, overheadMessage));

                if (hueIdx > 0 && hueIdx < 3000)
                {
                    item.SubItems[1].BackColor = Hues.GetHue(hueIdx - 1).GetColor(HueEntry.TextHueIDX);
                }
                else
                {
                    item.SubItems[1].BackColor = SystemColors.Control;
                }

                item.SubItems[1].ForeColor =
                    (item.SubItems[1].BackColor.GetBrightness() < 0.35 ? Color.White : Color.Black);
                item.UseItemStyleForSubItems = false;

                cliLocOverheadView.SafeAction(s => s.Items.Add(item));

                NewOverheadEntries.Add(new Core.OverheadMessages.OverheadMessage
                {
                    SearchMessage   = newItemText,
                    Hue             = hueIdx,
                    MessageOverhead = overheadMessage
                });
            }
        }
示例#14
0
        //------


        private void WriteBmpTile(int x, int y)
        {
            //I did a LOT of copy-pasting (and changing the syntax for my purpose) from the BMP and DDS generating code from Nibbio's MapConverter

            Tile land = tileMatrix.GetLandTile(x, y);

            HuedTile[] statics = tileMatrix.GetStaticTiles(x, y);
            HuedTile   highestStatic;
            ushort     color;

            if (task_mapstatics == 0 && statics.Length > 0)
            {
                highestStatic = statics[0];
                for (short i = 1; i < statics.Length; i++)
                {
                    if (statics[i].Z > highestStatic.Z)
                    {
                        highestStatic = statics[i];
                    }
                }

                if (land.Z > highestStatic.Z)
                {
                    color = (ushort)radarcol[GetLandTileID(land.ID)];
                }
                else if (highestStatic.Hue > 0)
                {
                    color = (ushort)(Hues.GetHue(highestStatic.Hue).Colors[(radarcol[highestStatic.ID + 0x4000] >> 10) & 0x1F]);
                }
                else
                {
                    color = (ushort)radarcol[highestStatic.ID];
                }
            }
            else
            {
                color = (ushort)radarcol[GetLandTileID(land.ID)];
            }

            // Format16bppRgb555 = 5 Pixel per channel -> 15 bit + 1 -> short, little endian format
            int position = (y * bmpData.Width + x) * 2;

            unsafe
            {
                bmpPtr[position]     = (byte)(color & 0xFF);
                bmpPtr[position + 1] = (byte)(color >> 8);
            }
            statics.Initialize();
            statics = null;
        }
示例#15
0
        public TextEntryElement(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
            int int32 = info.GetInt32("TextEntryElementVersion");

            this.mInitialText = info.GetString("Text");
            this.mHue         = Hues.GetHue(info.GetInt32("HueIndex"));
            if (int32 >= 2)
            {
                this.mID        = info.GetInt32(nameof(ID));
                this.mMaxLength = info.GetInt32(nameof(MaxLength));
            }
            this.RefreshCache();
        }
示例#16
0
        private bool SetContainerLabelHue()
        {
            ListViewItem selectedItem = containerView.Items[containerView.SelectedIndices[0]];

            HueEntry h = new HueEntry(GetHueFromListView(selectedItem.SubItems[0].Text));

            // TODO: BREAKING DRY!
            if (h.ShowDialog(this) == DialogResult.OK)
            {
                int hueIdx = h.Hue;

                if (hueIdx > 0 && hueIdx < 3000)
                {
                    selectedItem.SubItems[2].BackColor = Hues.GetHue(hueIdx - 1).GetColor(HueEntry.TextHueIDX);
                }
                else
                {
                    selectedItem.SubItems[2].BackColor = Color.White;
                }

                selectedItem.SubItems[2].ForeColor = (selectedItem.SubItems[2].BackColor.GetBrightness() < 0.35
                    ? Color.White
                    : Color.Black);

                foreach (Core.ContainerLabels.ContainerLabel list in Core.ContainerLabels.ContainerLabelList)
                {
                    if (list.Id.Equals(selectedItem.Text))
                    {
                        list.Hue = hueIdx;
                        break;
                    }
                }

                foreach (Core.ContainerLabels.ContainerLabel list in NewContainerEntries)
                {
                    if (list.Id.Equals(selectedItem.Text))
                    {
                        list.Hue = hueIdx;
                        break;
                    }
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#17
0
 public LabelElement()
 {
     this.mFontIndex  = 2;
     this.mCropped    = false;
     this.mPartialHue = true;
     this.mUnicode    = true;
     this.mHue        = Hues.GetHue(0);
     this.mText       = "New Label";
     try
     {
         this.RefreshCache();
     }
     catch (Exception ex)
     {
     }
 }
示例#18
0
        public ImageElement(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
            this.mHue = Hues.GetHue(0);
            int int32 = info.GetInt32("ImageElementVersion");

            this.mGumpID = info.GetInt32(nameof(GumpID));
            if (int32 >= 2)
            {
                this.mHue = Hues.GetHue(info.GetInt32("HueIndex"));
            }
            else
            {
                this.mHue = Hues.GetHue(0);
            }
        }
示例#19
0
 public override void RefreshCache()
 {
     if (this.mHue == null)
     {
         this.mHue = Hues.GetHue(0);
     }
     if (this.mCache != null)
     {
         this.mCache.Dispose();
     }
     this.mCache = UnicodeFonts.WriteText(2, this.mInitialText + " ");
     if ((this.mHue == null || this.mHue.Index == 0 ? 0 : 1) == 0)
     {
         return;
     }
     this.mHue.ApplyTo(this.mCache, false);
 }
示例#20
0
        private static void OnProps(Packet p, PacketHandlerEventArgs args)
        {
            p.Seek(5, SeekOrigin.Begin);
            Item item = World.FindItem(p.ReadUInt32());

            if (item == null || item.ItemID != 0x21FC || !keys.ContainsKey(item.Hue))
            {
                return;
            }

            if (item.ObjPropList.m_CustomContent.Count == 0)
            {
                string color = ColorTranslator.ToHtml(Hues.GetHue(item.Hue).GetColor(30));
                item.ObjPropList.Add("<basefont color={0}>{1}", color, keys[item.Hue]);
            }
            args.Block = true;
            WorldEx.SendToClient(item.ObjPropList.BuildPacket());
        }
示例#21
0
        private void ApplyHue(int hue)
        {
            if (m_Image == null || hue != m_Hue)
            {
                m_Image = (Bitmap)Art.GetStatic(m_Index).Clone();
            }

            if (hue == m_Hue)
            {
                return;
            }

            m_Hue = hue;

            if (m_Hue > 0)
            {
                Hues.GetHue(m_Hue).ApplyTo(m_Image, false);
            }
        }
示例#22
0
        private void SetContainerLabelHue()
        {
            ListViewItem selectedItem = cliLocOverheadView.Items[cliLocOverheadView.SelectedIndices[0]];

            HueEntry h = new HueEntry(GetHueFromListView(selectedItem.SubItems[1].Text));

            // TODO: BREAKING DRY!
            if (h.ShowDialog(this) == DialogResult.OK)
            {
                int hueIdx = h.Hue;

                if (hueIdx > 0 && hueIdx < 3000)
                {
                    selectedItem.SubItems[1].BackColor = Hues.GetHue(hueIdx - 1).GetColor(HueEntry.TextHueIDX);
                }
                else
                {
                    selectedItem.SubItems[1].BackColor = Color.White;
                }

                selectedItem.SubItems[1].ForeColor = (selectedItem.SubItems[1].BackColor.GetBrightness() < 0.35
                    ? Color.White
                    : Color.Black);

                foreach (Core.OverheadMessages.OverheadMessage list in Core.OverheadMessages.OverheadMessageList)
                {
                    if (list.SearchMessage.Equals(selectedItem.Text))
                    {
                        list.Hue = hueIdx;
                        break;
                    }
                }

                foreach (Core.OverheadMessages.OverheadMessage list in NewOverheadEntries)
                {
                    if (list.SearchMessage.Equals(selectedItem.Text))
                    {
                        list.Hue = hueIdx;
                        break;
                    }
                }
            }
        }
示例#23
0
        public ActionResult MultiArt(int id, int hue = 0)
        {
            DeleteTempFiles(System.Web.HttpContext.Current);
            Files.SetMulPath(HttpContext.Server.MapPath("~/mul"));
            Bitmap bmp = new Bitmap(Multis.GetComponents(id).GetImage());

            if (hue > 0 && hue <= 3000)
            {
                short[] colors = Hues.GetHue(hue).Colors;
                Hues.ApplyTo(bmp, colors, (TileData.ItemTable[id].Flags & TileFlag.PartialHue) != 0);
            }
            byte[] byteArray = ImageToByte(bmp);
            using (Image image = Image.FromStream(new MemoryStream(byteArray)))
            {
                image.Save(HttpContext.Server.MapPath("~/tempfiles/") + id + hue + ".png", ImageFormat.Png);
            }

            ViewBag.img = "/tempfiles/" + id + hue + ".png";
            return(File(HttpContext.Server.MapPath("~/tempfiles/") + id + hue + ".png", "image/png"));
        }
示例#24
0
        public LabelElement(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
            this.mFontIndex = 2;
            int int32 = info.GetInt32("LabelElementVersion");

            this.mText = info.GetString(nameof(Text));
            this.mHue  = Hues.GetHue(info.GetInt32("HueIndex"));
            if (int32 >= 3)
            {
                this.mPartialHue = info.GetBoolean(nameof(PartialHue));
                this.mUnicode    = info.GetBoolean(nameof(Unicode));
            }
            else
            {
                this.mPartialHue = true;
                this.mUnicode    = true;
            }
            this.mFontIndex = info.GetInt32("FontIndex");
            if (int32 <= 2)
            {
                --this.mFontIndex;
            }
            if (int32 >= 2)
            {
                this.mCropped = info.GetBoolean(nameof(Cropped));
                this.mSize    = (Size)info.GetValue(nameof(Size), typeof(Size));
            }
            else
            {
                this.mCropped = false;
                Bitmap stringImage = UnicodeFonts.GetStringImage(this.mFontIndex, this.mText + " ");
                this.mSize = stringImage.Size;
                stringImage.Dispose();
            }
            this.RefreshCache();
        }
示例#25
0
        private void OverheadMessages_Load(object sender, EventArgs e)
        {
            foreach (Core.OverheadMessages.OverheadMessage message in Core.OverheadMessages.OverheadMessageList)
            {
                ListViewItem item = new ListViewItem($"{message.SearchMessage}");
                item.SubItems.Add(new ListViewItem.ListViewSubItem(item, message.MessageOverhead));

                int hueIdx = message.Hue;

                if (hueIdx > 0 && hueIdx < 3000)
                {
                    item.SubItems[1].BackColor = Hues.GetHue(hueIdx - 1).GetColor(HueEntry.TextHueIDX);
                }
                else
                {
                    item.SubItems[1].BackColor = SystemColors.Control;
                }

                item.SubItems[1].ForeColor =
                    (item.SubItems[1].BackColor.GetBrightness() < 0.35 ? Color.White : Color.Black);

                item.UseItemStyleForSubItems = false;

                cliLocOverheadView.SafeAction(s => s.Items.Add(item));
            }

            overheadFormat.SafeAction(s => s.Text = Config.GetString("OverheadFormat"));

            if (Config.GetInt("OverheadStyle") == 0)
            {
                asciiStyle.SafeAction(s => s.Checked = true);
            }
            else
            {
                unicodeStyle.SafeAction(s => s.Checked = true);
            }
        }
示例#26
0
 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
 {
     if (value == null)
     {
         value = (object)Hues.GetHue(0);
     }
     if (value.GetType() == typeof(Hue))
     {
         this.edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
         if (this.edSvc != null)
         {
             HuePickerControl huePickerControl = new HuePickerControl((Hue)value);
             huePickerControl.ValueChanged += new HuePickerControl.ValueChangedEventHandler(this.ValueSelected);
             this.edSvc.DropDownControl((Control)huePickerControl);
             if (this.ReturnValue != null)
             {
                 huePickerControl.Dispose();
                 return((object)this.ReturnValue);
             }
             huePickerControl.Dispose();
         }
     }
     return(value);
 }
示例#27
0
 public ImageElement(int GumpID)
 {
     this.mHue   = Hues.GetHue(0);
     this.GumpID = GumpID;
 }
示例#28
0
        /// <summary>
        ///     Calculates the image displayed by the control
        /// </summary>
        private void CreateDisplay()
        {
            if (m_Image != null)
            {
                m_Image.Dispose();
            }

            switch (m_Art)
            {
            case Art.Items:

                try
                {
                    m_Image = new Bitmap(Ultima.Art.GetStatic(m_ArtIndex));
                }
                catch
                {
                    m_Image = null;
                }

                break;

            case Art.Gumps:

                try
                {
                    m_Image = new Bitmap(Gumps.GetGump(m_ArtIndex));
                }
                catch
                {
                    m_Image = null;
                }

                break;

            case Art.NPCs:

                try
                {
                    if (m_Animate)
                    {
                        m_Image = DoAnimation();
                    }
                    else
                    {
                        var hue = m_Hue;

                        var frames = Animations.GetAnimation(m_ArtIndex, 0, 1, ref hue, true, true);

                        if (frames != null)
                        {
                            m_Image = new Bitmap(frames[0].Bitmap);
                        }
                        else
                        {
                            m_Image = null;
                        }
                    }
                }
                catch
                {
                    m_Image = null;
                }

                break;
            }

            //
            // Hue
            //
            if (m_Hue > 0 && m_Image != null && m_Art != Art.Images)
            {
                if (m_Art != Art.NPCs || (m_Art == Art.NPCs && !m_Animate))
                {
                    var hue = Hues.GetHue(m_Hue - 1);

                    if (hue != null)
                    {
                        Hues.ApplyTo(m_Image, hue.Colors, m_Art == Art.Gumps);
                    }
                }
            }
        }
示例#29
0
 public ItemElement()
 {
     this.mSize  = new Size(50, 50);
     this.ItemID = 0;
     this.mHue   = Hues.GetHue(0);
 }
示例#30
0
        protected override void OnPaint(PaintEventArgs e)
        {
            Bitmap bitmap;

            if (ArtID == 0xFFFF)
            {
                bitmap = new Bitmap(20, 20);
                Graphics g = Graphics.FromImage(bitmap);
                g.DrawLine(Pens.DeepPink, 0, 0, 19, 19);
                g.DrawLine(Pens.DeepPink, 19, 0, 0, 19);
            }
            else
            {
                bitmap = isGump ? Core.GetGump(ArtID) : Art.GetStatic(ArtID);
            }

            if (size != -1)
            {
                bitmap = new Bitmap(bitmap, size, size);
            }
            else if (Hue != 0)
            {
                bitmap = new Bitmap(bitmap);
            }
            if (Hue != 0)
            {
                Hues.GetHue(Hue).ApplyTo(bitmap, false);
            }

            Point position = new Point();
            Size  bSize;

            if (isGump)
            {
                bSize = bitmap.Size;
            }
            else
            {
                int xMin, yMin, xMax, yMax;
                Art.Measure(bitmap, out xMin, out yMin, out xMax, out yMax);
                bSize    = new Size(xMax - xMin + 1, yMax - yMin + 1);
                position = new Point(-xMin, -yMin);
            }

            if (!string.IsNullOrEmpty(Text))
            {
                if (vertical)
                {
                    StringFormat format = new StringFormat(StringFormatFlags.DirectionVertical);
                    SizeF        sizeF  = e.Graphics.MeasureString(Text, Font, -1, format);
                    Size = new Size(bSize.Width + Font.Height, Math.Max(bSize.Height, (int)sizeF.Height));
                    e.Graphics.DrawString(Text, Font, Brushes.DeepPink, Size.Width - (Font.Height - Font.Size) / 2 - Font.Height, (Size.Height - sizeF.Height) / 2, format);
                }
                else
                {
                    SizeF sizeF = e.Graphics.MeasureString(Text, Font, -1);
                    Size = new Size(Math.Max(bSize.Width, (int)sizeF.Width), bSize.Height + Font.Height);
                    e.Graphics.DrawString(Text, Font, Brushes.DeepPink, (Size.Width - sizeF.Width) / 2, Size.Height - Font.Height);
                }
            }
            else
            {
                Size = bSize;
            }

            if (vertical)
            {
                e.Graphics.DrawImage(bitmap, position.X, position.Y + (Size.Height - bSize.Height) / 2F);
            }
            else
            {
                e.Graphics.DrawImage(bitmap, position.X + (Size.Width - bSize.Width) / 2F, position.Y);
            }
        }