📄 form1.cs
字号:
using System;
using System.Drawing;
using System.Collections;
using System.Drawing.Imaging;
using System.Windows.Forms;
using System.Text;
using System.Runtime.InteropServices;
namespace CadImage
{
public class fmCADImage : System.Windows.Forms.Form
{
private const long FILE_SHARE_READ = 0x00000001;
private const long CREATE_NEW = 1;
private const long OPEN_EXISTING = 3;
private const long GENERIC_READ = 0x80000000;
private const long GENERIC_WRITE = 0x40000000;
private const long CREATE_ALWAYS = 2;
private const long FILE_ATTRIBUTE_NORMAL = 0x00000080;
private float KX, KY;
private System.Windows.Forms.OpenFileDialog dlgOpenDXFFile;
private System.Windows.Forms.Panel panel1;
private lForm layerForm = new lForm();
private int fScale = 100;
internal System.Windows.Forms.MainMenu MainMenu1;
internal System.Windows.Forms.MenuItem MenuItem1;
internal System.Windows.Forms.MenuItem MenuItem3;
internal System.Windows.Forms.MenuItem MenuItem11;
internal System.Windows.Forms.MenuItem MenuItem4;
internal System.Windows.Forms.MenuItem MenuItem10;
internal System.Windows.Forms.MenuItem MenuItem2;
internal System.Windows.Forms.MenuItem MenuItem5;
internal System.Windows.Forms.MenuItem MenuItem6;
internal System.Windows.Forms.MenuItem MenuItem7;
internal System.Windows.Forms.MenuItem MenuItem8;
internal System.Windows.Forms.MenuItem MenuItem9;
internal System.Windows.Forms.MenuItem MenuItem12;
private System.Windows.Forms.MenuItem menuItem13;
private System.Windows.Forms.MenuItem menuItem14;
internal System.Windows.Forms.SaveFileDialog CD;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public fmCADImage()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
this.MouseWheel += new MouseEventHandler(MouseZoom);
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.dlgOpenDXFFile = new System.Windows.Forms.OpenFileDialog();
this.panel1 = new System.Windows.Forms.Panel();
this.MainMenu1 = new System.Windows.Forms.MainMenu();
this.MenuItem1 = new System.Windows.Forms.MenuItem();
this.MenuItem3 = new System.Windows.Forms.MenuItem();
this.MenuItem11 = new System.Windows.Forms.MenuItem();
this.MenuItem4 = new System.Windows.Forms.MenuItem();
this.MenuItem10 = new System.Windows.Forms.MenuItem();
this.MenuItem2 = new System.Windows.Forms.MenuItem();
this.menuItem14 = new System.Windows.Forms.MenuItem();
this.menuItem13 = new System.Windows.Forms.MenuItem();
this.MenuItem5 = new System.Windows.Forms.MenuItem();
this.MenuItem6 = new System.Windows.Forms.MenuItem();
this.MenuItem7 = new System.Windows.Forms.MenuItem();
this.MenuItem8 = new System.Windows.Forms.MenuItem();
this.MenuItem9 = new System.Windows.Forms.MenuItem();
this.MenuItem12 = new System.Windows.Forms.MenuItem();
this.CD = new System.Windows.Forms.SaveFileDialog();
this.SuspendLayout();
//
// dlgOpenDXFFile
//
this.dlgOpenDXFFile.DefaultExt = "*.dxf";
this.dlgOpenDXFFile.Filter = "CAD files (dwg, dxf, rtl, spl, prn, gl2, hpgl2, hpgl, hp2, hp1, hp, plo, hpg, hg, hgl, plt, cgm, svg, svgz)|*.dwg;*.dxf;*.rtl;*.spl;*.prn;*.gl2;*.hpgl2;*.hpgl;*.hp2;*.hp1;*.hp;*.plo;*.hpg;*.hg;*.hgl;*.plt;*.cgm;*.svg;*.svgz|" +
"AutoCAD files (dwg, dxf)|*.dxf;*.dwg|" +
"HPGL/2 files (rtl, spl, prn, gl2, hpgl2, hpgl, hp2, hp1, hp, plo, hpg, hg, hgl, plt)| *.rtl;*.spl;*.prn;*.gl2;*.hpgl2;*.hpgl;*.hp2;*.hp1;*.hp;*.plo;*.hpg;*.hg;*.hgl;*.plt|" +
"Computer Graphics Metafile (cgm)|*.cgm|" +
"Scalable Vector Graphics (svg, svgz)| *.svg; *.svgz|" +
"All files (*.*)|*.*";
this.dlgOpenDXFFile.RestoreDirectory = true;
this.dlgOpenDXFFile.Title = "OpenDXFFile";
//
// panel1
//
this.panel1.AutoScroll = true;
this.panel1.BackColor = System.Drawing.Color.White;
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(664, 326);
this.panel1.TabIndex = 4;
this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseUp);
this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove);
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseDown);
//
// MainMenu1
//
this.MainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.MenuItem1,
this.MenuItem2,
this.MenuItem12});
//
// MenuItem1
//
this.MenuItem1.Index = 0;
this.MenuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.MenuItem3,
this.MenuItem11,
this.MenuItem4,
this.MenuItem10});
this.MenuItem1.Text = "File";
//
// MenuItem3
//
this.MenuItem3.Index = 0;
this.MenuItem3.Text = "Load";
this.MenuItem3.Click += new System.EventHandler(this.button1_Click);
//
// MenuItem11
//
this.MenuItem11.Index = 1;
this.MenuItem11.Text = "Save as BMP";
this.MenuItem11.Click += new System.EventHandler(this.MenuItem11_Click);
//
// MenuItem4
//
this.MenuItem4.Index = 2;
this.MenuItem4.Text = "Save as JPG";
this.MenuItem4.Click += new System.EventHandler(this.MenuItem4_Click);
//
// MenuItem10
//
this.MenuItem10.Index = 3;
this.MenuItem10.Text = "Exit";
this.MenuItem10.Click += new System.EventHandler(this.MenuItem10_Click);
//
// MenuItem2
//
this.MenuItem2.Index = 1;
this.MenuItem2.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem14,
this.menuItem13,
this.MenuItem5,
this.MenuItem6,
this.MenuItem7,
this.MenuItem8,
this.MenuItem9});
this.MenuItem2.Text = "Scale";
//
// menuItem14
//
this.menuItem14.Index = 0;
this.menuItem14.Text = "10";
this.menuItem14.Click += new System.EventHandler(this.menuItem14_Click);
//
// menuItem13
//
this.menuItem13.Index = 1;
this.menuItem13.Text = "25";
this.menuItem13.Click += new System.EventHandler(this.menuItem14_Click);
//
// MenuItem5
//
this.MenuItem5.Index = 2;
this.MenuItem5.Text = "50";
this.MenuItem5.Click += new System.EventHandler(this.menuItem14_Click);
//
// MenuItem6
//
this.MenuItem6.Checked = true;
this.MenuItem6.Index = 3;
this.MenuItem6.Text = "100";
this.MenuItem6.Click += new System.EventHandler(this.menuItem14_Click);
//
// MenuItem7
//
this.MenuItem7.Index = 4;
this.MenuItem7.Text = "200";
this.MenuItem7.Click += new System.EventHandler(this.menuItem14_Click);
//
// MenuItem8
//
this.MenuItem8.Index = 5;
this.MenuItem8.Text = "500";
this.MenuItem8.Click += new System.EventHandler(this.menuItem14_Click);
//
// MenuItem9
//
this.MenuItem9.Index = 6;
this.MenuItem9.Text = "1000";
this.MenuItem9.Click += new System.EventHandler(this.menuItem14_Click);
//
// MenuItem12
//
this.MenuItem12.Index = 2;
this.MenuItem12.Text = "Layers";
this.MenuItem12.Click += new System.EventHandler(this.button2_Click);
//
// fmCADImage
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(664, 326);
this.Controls.Add(this.panel1);
this.Menu = this.MainMenu1;
this.Name = "fmCADImage";
this.Text = "DemoCADImage";
this.Resize += new System.EventHandler(this.fmCADImage_Resize);
this.Closing += new System.ComponentModel.CancelEventHandler(this.Form1_Closing);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new fmCADImage());
}
private void button1_Click(object sender, System.EventArgs e)
{
if(DLLWin32Import.CADFile != IntPtr.Zero)
{
DLLWin32Import.CloseCAD(DLLWin32Import.CADFile);
DLLWin32Import.CADFile = IntPtr.Zero;
}
dlgOpenDXFFile.ShowDialog();
DLLWin32Import.CADFile = DLLWin32Import.CreateCAD(panel1.Handle, dlgOpenDXFFile.FileName);
if(DLLWin32Import.CADFile != IntPtr.Zero)
{
panel1.Visible = true;
panel1.Invalidate();
}
//Layers
int Cnt = DLLWin32Import.CADLayerCount(DLLWin32Import.CADFile);
int I;
int Layer;
DXFData EData = new DXFData();
layerForm.layerList.Items.Clear();
for(I = 0; I < Cnt; I++)
{
Layer = DLLWin32Import.CADLayer(DLLWin32Import.CADFile, I, ref EData);
layerForm.layers.Add(Layer);
layerForm.layerList.Items.Add(EData.Text, true);
}
}
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if(DLLWin32Import.CADFile != IntPtr.Zero) {
DLLWin32Import.CloseCAD(DLLWin32Import.CADFile);
DLLWin32Import.CADFile = IntPtr.Zero;
}
}
private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
if(DLLWin32Import.CADFile == IntPtr.Zero) return;
Rect R = new Rect();
float AbsWidth = 0;
float AbsHeight = 0;
float K;
if(DLLWin32Import.CADFile != IntPtr.Zero)
DLLWin32Import.GetBoxCAD(DLLWin32Import.CADFile, ref AbsWidth, ref AbsHeight);
if(AbsHeight != -1)
GetClientRect(panel1, ref R);
if(AbsWidth == 0) K = 1;
else K = AbsHeight / AbsWidth;
R.Bottom = (int)(R.Top + (R.Right - R.Left) * K);
R.Left = (R.Left * fScale / 100) + DLLWin32Import.FX;
R.Right = (R.Right * fScale / 100) + DLLWin32Import.FX;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -