C#畫表格


下面給一個簡單的例子,至於多個單元格合並,請自己去實現,也就是坐標計算的事情。

至於畫圖,用GDI,還是DirectX畫,自己選擇,不過這里主要講的是算法:坐標計算以及畫的過程。

注意不要每個列都畫一個矩形,很浪費的,因為都重疊了。

using System;
using System.Drawing;
using System.Windows.Forms;

namespace GDITableDemo {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e) {
            string[] columns = textBox1.Text.Split(',');

            Font font = panel1.Font;//字體
            Brush color = Brushes.Black;//顏色
            Brush border = new SolidBrush(panel1.ForeColor);//用前景色畫邊框
            Pen borderStyle =new Pen(border, 1);
            
            //從什么位置開始畫
            float top = 0F;//Y坐標
            float left = 0F;//X坐標
            //畫筆X坐標偏移量,left1:最后一次位置,left2當前最遠位置
            float left1 = left, left2 = 0F;
            float textLeft=0F;//文本X坐標
            float textTop = 0F;//文本Y坐標
            float textWidth=0F;//文本寬度
            float textHeight=0F;//文本高度
            const float columnHeight = 30F;//行高,包括邊框在內
            const float columnPadding = 10F;//每一列左右多出10像素

            Graphics g = Graphics.FromHwnd(panel1.Handle);
            textHeight = font.GetHeight(g);//高
            textTop = (columnHeight - textHeight) / 2;//上邊
            for (int i = 0; i < columns.Length; i++) {
                //先計算文本
                textWidth= g.MeasureString(columns[i],font).Width;//寬
                textLeft = left1 + columnPadding;//左邊
                left2=textLeft+textWidth+columnPadding;

                //先畫左邊框
                g.DrawLine(borderStyle, left1, top, left1, columnHeight);

                //畫文字
                g.DrawString(columns[i], font, color, textLeft, textTop);
                //注意左邊的位置要開始偏移了
                left1 = left2;
            }
            g.DrawLine(borderStyle, left, top, left2, top);//上邊框
            g.DrawLine(borderStyle, left, columnHeight, left2, columnHeight);//下邊框
            g.DrawLine(borderStyle, left2, top, left2, columnHeight);//右邊框

        }
    }
}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM