From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。
---
HotelPms.Share.Windows/Component/Design/DesignItem.cs | 396 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 396 insertions(+), 0 deletions(-)
diff --git a/HotelPms.Share.Windows/Component/Design/DesignItem.cs b/HotelPms.Share.Windows/Component/Design/DesignItem.cs
new file mode 100644
index 0000000..440baf6
--- /dev/null
+++ b/HotelPms.Share.Windows/Component/Design/DesignItem.cs
@@ -0,0 +1,396 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Drawing.Imaging;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HotelPms.Share.Windows.Component.Design
+{
+ public class DesignItem
+ {
+ public Rectangle[] SmallRect = new Rectangle[8];
+ public Rectangle[] BoundRect = new Rectangle[4];
+
+ public static Size Square = new Size(7, 7);
+ //private StringFormat m_StringFormat = new StringFormat(StringFormatFlags.NoWrap);
+
+ private DesignPanel.ItemType m_Appearance = DesignPanel.ItemType.Normal;
+
+ /// <summary>
+ /// 外観
+ /// </summary>
+ public DesignPanel.ItemType Appearance
+ {
+ get { return m_Appearance; }
+ set { m_Appearance = value; }
+ }
+
+ private bool m_DesignMode = false;
+
+ public bool DesignMode
+ {
+ get { return m_DesignMode; }
+ set { m_DesignMode = value; }
+ }
+
+ private string m_ImageFile = string.Empty;
+
+ public string ImageFile
+ {
+ get { return m_ImageFile; }
+ set { m_ImageFile = value; }
+ }
+
+ private string m_Text = string.Empty;
+
+ public string Text
+ {
+ get { return m_Text; }
+ set { m_Text = value; }
+ }
+
+ private float m_LineWidth = 1.0F;
+
+ public float LineWidth
+ {
+ get { return m_LineWidth; }
+ set { m_LineWidth = value; }
+ }
+
+ private Font m_Font = SystemFonts.MenuFont;
+ public Font Font
+ {
+ get { return m_Font; }
+ set { m_Font = value; }
+ }
+
+ public int X1
+ {
+ get { return m_ClientRectangle.X; }
+ set { m_ClientRectangle = new Rectangle(new Point(value, m_ClientRectangle.Y), m_ClientRectangle.Size); }
+ }
+
+ public int Y1
+ {
+ get { return m_ClientRectangle.Y; }
+ set { m_ClientRectangle = new Rectangle(new Point(m_ClientRectangle.X, value), m_ClientRectangle.Size); }
+ }
+
+ public int X2
+ {
+ get { return m_ClientRectangle.X + m_ClientRectangle.Width; }
+ set { m_ClientRectangle = new Rectangle(m_ClientRectangle.Location, new Size(value - m_ClientRectangle.X, m_ClientRectangle.Height)); }
+ }
+
+ public int Y2
+ {
+ get { return m_ClientRectangle.Y + m_ClientRectangle.Height; }
+ set { m_ClientRectangle = new Rectangle(m_ClientRectangle.Location, new Size(m_ClientRectangle.Width, value - m_ClientRectangle.Y)); }
+ }
+
+ private Rectangle m_ClientRectangle = new Rectangle(0, 0, 100, 100);
+
+ public Rectangle ClientRectangle
+ {
+ get { return m_ClientRectangle; }
+ set { m_ClientRectangle = value; }
+ }
+
+ private Color m_BackColor = Color.White;
+
+ public Color BackColor
+ {
+ get { return m_BackColor; }
+ set { m_BackColor = value; }
+ }
+
+ private Color m_BackGradientColor = Color.Empty;
+
+ public Color BackGradientColor
+ {
+ get { return m_BackGradientColor; }
+ set { m_BackGradientColor = value; }
+ }
+
+ private LinearGradientMode m_BackGradientMode = LinearGradientMode.Horizontal;
+
+ public LinearGradientMode BackGradientMode
+ {
+ get { return m_BackGradientMode; }
+ set { m_BackGradientMode = value; }
+ }
+
+
+ private Color m_ForeColor = Color.Black;
+
+ public Color ForeColor
+ {
+ get { return m_ForeColor; }
+ set { m_ForeColor = value; }
+ }
+
+ private TextFormatFlags m_LineAlignment = TextFormatFlags.VerticalCenter;
+
+ /// <summary>
+ /// 縦
+ /// </summary>
+ public TextFormatFlags LineAlignment
+ {
+ get { return m_LineAlignment; }
+ set { m_LineAlignment = value; }
+ }
+
+ private TextFormatFlags m_Alignment = TextFormatFlags.Left;
+
+ /// <summary>
+ /// 水平
+ /// </summary>
+ public TextFormatFlags Alignment
+ {
+ get { return m_Alignment; }
+ set { m_Alignment = value; }
+ }
+
+ public bool EnabledBorder { get; set; } = false;
+
+ public string Name { get; set; } = string.Empty;
+
+ public object Tag { get; set; } = null;
+
+ public void Draw(Graphics g)
+ {
+ FillCell(g);
+ DrawCellImage(g); //画像
+ DrawCellText(g); //文字
+ }
+
+ private void DrawCellImage(Graphics g)
+ {
+ try
+ {
+ if (m_Appearance == DesignPanel.ItemType.Line) { return; }
+ if (m_ImageFile.Length == 0) { return; }
+ if (!File.Exists(m_ImageFile)) { return; }
+ Bitmap img = Image.FromFile(m_ImageFile) as Bitmap;
+ using (ImageAttributes vAttr = new ImageAttributes())
+ {
+ vAttr.SetColorKey(img.GetPixel(0, 0), img.GetPixel(0, 0));
+ g.DrawImage(img, m_ClientRectangle, 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, vAttr);
+ }
+ }
+ catch { }
+ }
+
+ private Font GetScaleFont(Font orgFont, Graphics g)
+ {
+ return new Font(orgFont.FontFamily, orgFont.Size * g.Transform.Elements[0], orgFont.Style);
+ }
+
+ private void DrawCellText(Graphics g)
+ {
+ bool newflag = m_ForeColor.IsSystemColor;
+ Color brushColor = m_ForeColor;
+
+ if (m_Appearance == DesignPanel.ItemType.Normal)
+ {
+ if (g.Transform.Elements[0] == 1F)
+ {
+ TextRenderer.DrawText(g, m_Text, m_Font, m_ClientRectangle, m_ForeColor, m_Alignment | m_LineAlignment);
+ }
+ else
+ {
+ using (Font newFont = GetScaleFont(m_Font, g))
+ {
+ float scale = g.Transform.Elements[0];
+ TextRenderer.DrawText(g, m_Text, newFont, new Rectangle((int)(m_ClientRectangle.X * scale), (int)(m_ClientRectangle.Y * scale), (int)(m_ClientRectangle.Width * scale), (int)(m_ClientRectangle.Height * scale)), m_ForeColor, m_Alignment | m_LineAlignment);
+ }
+ }
+ }
+ else
+ {
+ Pen pen = newflag ? SystemPens.FromSystemColor(brushColor) : new Pen(brushColor);
+ pen.Width = m_LineWidth;
+ SmoothingMode sm = g.SmoothingMode;
+ g.SmoothingMode = SmoothingMode.AntiAlias;
+ g.DrawLine(pen, new Point(X1, Y1), new Point(X2, Y2));
+ g.SmoothingMode = sm;
+ if (!newflag) { pen.Dispose(); }
+ }
+
+
+ }
+
+ private void FillCell(Graphics g)
+ {
+ if (m_Appearance == DesignPanel.ItemType.Normal)
+ {
+ if (m_BackColor.Equals(Color.Empty) || m_BackColor.Equals(Color.Transparent)) { return; }
+
+ Color bColorMax = m_BackColor;
+ Color bColorMin = m_BackGradientColor;
+ if (m_BackGradientColor.Equals(Color.Empty))
+ {
+ bool newflag = bColorMax.IsSystemColor;
+ SolidBrush brush = newflag ? SystemBrushes.FromSystemColor(bColorMax) as SolidBrush : new SolidBrush(bColorMax);
+ g.FillRectangle(brush, m_ClientRectangle);
+ if (!newflag) { brush.Dispose(); }
+ }
+ else
+ {
+ using (LinearGradientBrush lgBrush = new LinearGradientBrush(m_ClientRectangle, bColorMax, bColorMin, m_BackGradientMode)) { g.FillRectangle(lgBrush, m_ClientRectangle); }
+ }
+
+ if (EnabledBorder) { ControlPaint.DrawVisualStyleBorder(g, m_ClientRectangle); }
+ }
+
+ //ControlPaint.DrawBorder(g, m_ClientRectangle,
+ // Color.DimGray, 1, ButtonBorderStyle.Solid, //左边
+ // Color.DimGray, 1, ButtonBorderStyle.Solid, //上边
+ // Color.White, 1, ButtonBorderStyle.Solid, //右边
+ // Color.White, 1, ButtonBorderStyle.Solid);//底边
+
+ //その部分
+ if (!m_DesignMode) { return; }
+ DrawDesignFrame(g);
+
+ //if (isFocus && m_IsMouseDown)
+ //{
+ //ControlPaint.DrawBorder(e.Graphics, r,
+ // Color.DimGray, 1, ButtonBorderStyle.Solid, //左边
+ // Color.DimGray, 1, ButtonBorderStyle.Solid, //上边
+ // Color.White, 1, ButtonBorderStyle.Solid, //右边
+ // Color.White, 1, ButtonBorderStyle.Solid);//底边
+ //}
+ }
+
+ /// <summary>
+ /// 6個点
+ /// </summary>
+ /// <returns></returns>
+ private Rectangle[] CreateDesignSmallRect()
+ {
+ Rectangle[] SmallRect = new Rectangle[8];
+ if (m_Appearance == DesignPanel.ItemType.Line && X1 == X2)
+ {
+ #region 縦線 (※X1は線の中心のX)
+
+ SmallRect[0] = Rectangle.Empty; //上左
+ SmallRect[1] = new Rectangle(new Point(X1 - Square.Width / 2, Y1 - Square.Height), Square); //上中間
+ SmallRect[2] = Rectangle.Empty; //上右
+ SmallRect[3] = Rectangle.Empty; //中間左
+ SmallRect[4] = Rectangle.Empty; //中間右
+ SmallRect[5] = Rectangle.Empty; //下左
+ SmallRect[6] = new Rectangle(new Point(X1 - Square.Width / 2, Y2), Square); //下中間
+ SmallRect[7] = Rectangle.Empty; //下右
+
+ #endregion
+ }
+ else if (m_Appearance == DesignPanel.ItemType.Line && Y1 == Y2)
+ {
+ #region 横線 (※Y1は線の中心のY)
+
+ SmallRect[0] = Rectangle.Empty; //上左
+ SmallRect[1] = Rectangle.Empty; //上中間
+ SmallRect[2] = Rectangle.Empty; //上右
+ SmallRect[3] = new Rectangle(new Point(X1 - Square.Width, Y1 - Square.Height/ 2), Square); //中間左
+ SmallRect[4] = new Rectangle(new Point(X2, Y1 - Square.Height / 2), Square); //中間右
+ SmallRect[5] = Rectangle.Empty; //下左
+ SmallRect[6] = Rectangle.Empty; //下中間
+ SmallRect[7] = Rectangle.Empty; //下右
+
+ #endregion
+ }
+ else
+ {
+ SmallRect[0] = new Rectangle(new Point(m_ClientRectangle.X - Square.Width, m_ClientRectangle.Y - Square.Height), Square); //上左
+ SmallRect[1] = new Rectangle(new Point(m_ClientRectangle.X + (m_ClientRectangle.Width - Square.Width) / 2, m_ClientRectangle.Y - Square.Height), Square); //上中間
+ SmallRect[2] = new Rectangle(new Point(m_ClientRectangle.X + m_ClientRectangle.Width, m_ClientRectangle.Y - Square.Height), Square); //上右
+ SmallRect[3] = new Rectangle(new Point(m_ClientRectangle.X - Square.Width, m_ClientRectangle.Y + (m_ClientRectangle.Height - Square.Height) / 2), Square); //中間左
+ SmallRect[4] = new Rectangle(new Point(m_ClientRectangle.X + m_ClientRectangle.Width, m_ClientRectangle.Y + (m_ClientRectangle.Height - Square.Height) / 2), Square); //中間右
+ SmallRect[5] = new Rectangle(new Point(m_ClientRectangle.X - Square.Width, m_ClientRectangle.Y + m_ClientRectangle.Height), Square); //下左
+ SmallRect[6] = new Rectangle(new Point(m_ClientRectangle.X + (m_ClientRectangle.Width - Square.Width) / 2, m_ClientRectangle.Y + m_ClientRectangle.Height), Square); //下中間
+ SmallRect[7] = new Rectangle(new Point(m_ClientRectangle.X + m_ClientRectangle.Width, m_ClientRectangle.Y + m_ClientRectangle.Height), Square); //下右
+ }
+ return SmallRect;
+ }
+
+ /// <summary>
+ /// 棒
+ /// </summary>
+ /// <returns></returns>
+ private Rectangle[] CreateDesignBoundRect()
+ {
+ int adding = 2;
+ Rectangle[] BoundRect = new Rectangle[4];
+ if (m_Appearance == DesignPanel.ItemType.Line && X1 == X2)
+ {
+ int x = 0;
+ int x1 = 0;
+ int width = 0;
+ if ((int)m_LineWidth < Square.Width)
+ {
+ x = X1 - Square.Width / 2 - Square.Width;
+ width = Square.Width * 3;
+ }
+ else
+ {
+ x = X1 - (int)m_LineWidth / 2 - Square.Width;
+ width = Square.Width * 2 + (int)m_LineWidth;
+ }
+ x1 = x + width - (Square.Width - adding);
+
+ BoundRect[0] = new Rectangle(x, Y1 - Square.Height, width, Square.Height); //上
+ BoundRect[1] = new Rectangle(x, Y1, Square.Width - adding, Y2 - Y1); //左
+ BoundRect[2] = new Rectangle(x, Y2, width, Square.Height); //下
+ BoundRect[3] = new Rectangle(x1, Y1, Square.Width - adding, Y2 - Y1); //右
+ }
+ else if (m_Appearance == DesignPanel.ItemType.Line && Y1 == Y2)
+ {
+ int y = 0;
+ int y1 = 0;
+ int height = 0;
+ if ((int)m_LineWidth < Square.Height)
+ {
+ y = Y1 - Square.Height / 2 - Square.Height;
+ height = Square.Height * 3;
+ }
+ else
+ {
+ y = Y1 - (int)m_LineWidth / 2 - Square.Height;
+ height = Square.Height * 2 + (int)m_LineWidth;
+ }
+ y1 = y + height - (Square.Height - adding);
+
+ BoundRect[0] = new Rectangle(X1, y, X2 - X1, Square.Height - adding); //上
+ BoundRect[1] = new Rectangle(X1 - Square.Width, y, Square.Width, height); //左
+ BoundRect[2] = new Rectangle(X1, y1, X2 - X1, Square.Height - adding); //下
+ BoundRect[3] = new Rectangle(X2, y, Square.Width, height); //右
+ }
+ else
+ {
+ BoundRect[0] = new Rectangle(m_ClientRectangle.X, m_ClientRectangle.Y - Square.Height, m_ClientRectangle.Width, Square.Height - adding); //上
+ BoundRect[1] = new Rectangle(m_ClientRectangle.X - Square.Width, m_ClientRectangle.Y, Square.Width - adding, m_ClientRectangle.Height); //左
+ BoundRect[2] = new Rectangle(m_ClientRectangle.X, m_ClientRectangle.Y + m_ClientRectangle.Height + adding + 1, m_ClientRectangle.Width, Square.Height - adding); //下
+ BoundRect[3] = new Rectangle(m_ClientRectangle.X + m_ClientRectangle.Width + adding + 1, m_ClientRectangle.Y, Square.Width - adding, m_ClientRectangle.Height); //右
+ }
+ return BoundRect;
+ }
+
+ private void DrawDesignFrame(Graphics g)
+ {
+ try
+ {
+ SmallRect = CreateDesignSmallRect();
+ BoundRect = CreateDesignBoundRect();
+ g.FillRectangles(Brushes.LightGray, BoundRect);
+ g.FillRectangles(Brushes.White, SmallRect);
+ g.DrawRectangles(Pens.Black, SmallRect);
+ }
+ catch { }
+ }
+ }
+}
--
Gitblit v1.10.0