//画图 public void tsbBase_Paint(object sender, PaintEventArgs e) { //先画背景 IMyContainer imctl = (IMyContainer)skinEng.GetInterface(tsbBase.Owner); imctl.InvokePaintBackground(tsbBase, e); Graphics g = e.Graphics; int imageIndex = 0; if (IsMouseOn) { if (IsMouseDown) { imageIndex = 2; } else { imageIndex = 1; } } else { imageIndex = 0; } if (!tsbBase.Enabled) { imageIndex = 0; } //画按钮图片 GraphicHelper.DrawImageWithoutBorder(g, TrueLeftTopImages[imageIndex], ButtonRects[0]); GraphicHelper.DrawImageWithoutBorder(g, TrueTopImages[imageIndex], ButtonRects[1]); GraphicHelper.DrawImageWithoutBorder(g, TrueRightTopImages[imageIndex], ButtonRects[2]); GraphicHelper.DrawImageWithoutBorder(g, TrueLeftImages[imageIndex], ButtonRects[3]); GraphicHelper.DrawImageWithoutBorder(g, TrueCenterImages[imageIndex], ButtonRects[4]); GraphicHelper.DrawImageWithoutBorder(g, TrueRightImages[imageIndex], ButtonRects[5]); GraphicHelper.DrawImageWithoutBorder(g, TrueLeftBottomImages[imageIndex], ButtonRects[6]); GraphicHelper.DrawImageWithoutBorder(g, TrueBottomImages[imageIndex], ButtonRects[7]); GraphicHelper.DrawImageWithoutBorder(g, TrueRightBottomImages[imageIndex], ButtonRects[8]); //准备工作 StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; sf.FormatFlags = StringFormatFlags.NoWrap; SolidBrush sb = null; Color textColor; Rectangle rect = new Rectangle(new Point(0, 0), tsbBase.Size); RectangleF rectF = new RectangleF(new Point(0, 0), tsbBase.Size); string displayText = GraphicHelper.GetAppropriateString(g, tsbBase.Text.Replace("&", string.Empty), tsbBase.Font, rectF); //文字大小 SizeF stringSize = g.MeasureString(displayText, tsbBase.Font); Image toDrawImage; if (tsbBase.Enabled) { int hue, sat, bri; ColorHelper.RGB2HSB(skinEng.BackColor, out hue, out sat, out bri); textColor = ColorHelper.HSB2RGBColor(hue, sat, 49); toDrawImage = tsbBase.Image; } else { imageIndex = 0; textColor = Color.DarkGray; toDrawImage = ImageHelper.RemoveColor(tsbBase.Image); } //画背景图片 if (tsbBase.BackgroundImage != null) { GraphicHelper.DrawImage(g, tsbBase.BackgroundImage, rect, tsbBase.BackgroundImageLayout); } sb = new SolidBrush(textColor); //画前景 switch (tsbBase.DisplayStyle) { case ToolStripItemDisplayStyle.Image: { if (tsbBase.Image != null) { GraphicHelper.DrawImage(g, toDrawImage, rect, ImageLayout.Center); } break; } case ToolStripItemDisplayStyle.Text: { g.DrawString(displayText, tsbBase.Font, sb, rectF, sf); break; } case ToolStripItemDisplayStyle.None: { break; } case ToolStripItemDisplayStyle.ImageAndText: { if (tsbBase.Image == null) { g.DrawString(displayText, tsbBase.Font, sb, rectF, sf); } else { int totalWidth = (int)stringSize.Width + tsbBase.Image.Width; Rectangle rectImage = new Rectangle((tsbBase.Width - totalWidth) / 2, (tsbBase.Height - tsbBase.Image.Height) / 2, tsbBase.Image.Width, tsbBase.Image.Height); RectangleF rectText = new RectangleF(rectImage.Right, (tsbBase.Height - stringSize.Height) / 2, stringSize.Width, stringSize.Height); g.DrawImage(toDrawImage, rectImage); g.DrawString(displayText, tsbBase.Font, sb, rectText, sf); } break; } } }
//画图 void btnBase_Paint(object sender, PaintEventArgs e) { //Debug.Print("btnBase_Paint,ButtonText:" + btnBase.Text); Graphics g = e.Graphics; int imageIndex = 0; if (IsMouseOn) { if (IsMouseDown) { imageIndex = 2; } else { imageIndex = 1; } } else { imageIndex = 0; #warning 当按钮得到焦点时 //当按钮得到焦点时 if (btnBase.Focused) { imageIndex = 1; } } StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; sf.FormatFlags = StringFormatFlags.NoWrap; SolidBrush sb = null; Rectangle rect = ButtonRects[4]; RectangleF rectF = ButtonRects[4]; string displayText = GraphicHelper.GetAppropriateString(g, btnBase.Text.Replace("&", string.Empty), btnBase.Font, rectF); Color textColor; if (btnBase.Enabled) { textColor = ButtonTextColor; } else { imageIndex = 3; textColor = ButtonDisableTextColor; } //画按钮图片 GraphicHelper.DrawImageWithoutBorder(g, TrueLeftTopImages[imageIndex], ButtonRects[0]); GraphicHelper.DrawImageWithoutBorder(g, TrueTopImages[imageIndex], ButtonRects[1]); GraphicHelper.DrawImageWithoutBorder(g, TrueRightTopImages[imageIndex], ButtonRects[2]); GraphicHelper.DrawImageWithoutBorder(g, TrueLeftImages[imageIndex], ButtonRects[3]); GraphicHelper.DrawImageWithoutBorder(g, TrueCenterImages[imageIndex], ButtonRects[4]); GraphicHelper.DrawImageWithoutBorder(g, TrueRightImages[imageIndex], ButtonRects[5]); GraphicHelper.DrawImageWithoutBorder(g, TrueLeftBottomImages[imageIndex], ButtonRects[6]); GraphicHelper.DrawImageWithoutBorder(g, TrueBottomImages[imageIndex], ButtonRects[7]); GraphicHelper.DrawImageWithoutBorder(g, TrueRightBottomImages[imageIndex], ButtonRects[8]); //画背景图片 if (btnBase.BackgroundImage != null) { GraphicHelper.DrawImage(g, btnBase.BackgroundImage, rect, btnBase.BackgroundImageLayout); } //画前景图片 if (btnBase.Image != null) { GraphicHelper.DrawImage(g, btnBase.Image, rect, btnBase.ImageAlign); } sb = new SolidBrush(textColor); g.DrawString(displayText, btnBase.Font, sb, rectF, sf); }