zoukankan      html  css  js  c++  java
  • 一些基础但常用的东西

    string str="";
    str += "\r\n" + System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
    str += "\r\n" + System.Environment.CurrentDirectory;
    str += "\r\n" + System.IO.Directory.GetCurrentDirectory();
    str += "\r\n" + System.AppDomain.CurrentDomain.BaseDirectory;
    str += "\r\n" + System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
    str += "\r\n" + System.Windows.Forms.Application.StartupPath;
    str += "\r\n" + System.Windows.Forms.Application.ExecutablePath;
    Console.Write(str);
    Console.ReadKey();

    得到结果:

    D:\路径测试\bin\Debug\路径测试.vshost.exe
    D:\路径测试\bin\Debug
    D:\路径测试\bin\Debug
    D:\路径测试\bin\Debug\
    D:\路径测试\bin\Debug\
    D:\路径测试\bin\Debug
    D:\路径测试\bin\Debug\路径测试.EXE

    1.   System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
         获取模块的完整路径。
    2.   System.Environment.CurrentDirectory
         获取和设置当前目录(该进程从中启动的目录)的完全限定目录。
    3.   System.IO.Directory.GetCurrentDirectory()
         获取应用程序的当前工作目录。这个不一定是程序从中启动的目录啊,有可能程序放在C:\www里,这个函数有可能返回C:\Documents and Settings\ZYB\,或者C:\Program Files\Adobe\,有时不一定返回什么东东,我也搞不懂了。
    4. System.AppDomain.CurrentDomain.BaseDirectory
         获取程序的基目录。
    5. System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
         获取和设置包括该应用程序的目录的名称。
    6. System.Windows.Forms.Application.StartupPath
         获取启动了应用程序的可执行文件的路径。效果和2、5一样。只是5返回的字符串后面多了一个"\"而已
    7. System.Windows.Forms.Application.ExecutablePath
         获取启动了应用程序的可执行文件的路径及文件名,效果有时和1一样。


    1. BMP文件组成
    BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。
    2. BMP文件头
    BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。

    其结构定义如下:

    typedef struct tagBITMAPFILEHEADER
    {
    WORDbfType; // 位图文件的类型,必须为BM
    DWORD bfSize; // 位图文件的大小,以字节为单位
    WORDbfReserved1; // 位图文件保留字,必须为0
    WORDbfReserved2; // 位图文件保留字,必须为0
    DWORD bfOffBits; // 位图数据的起始位置,以相对于位图
    // 文件头的偏移量表示,以字节为单位
    } BITMAPFILEHEADER;

    3. 位图信息头

    BMP位图信息头数据用于说明位图的尺寸等信息。
    typedef struct tagBITMAPINFOHEADER{
    DWORD biSize; // 本结构所占用字节数
    LONGbiWidth; // 位图的宽度,以像素为单位
    LONGbiHeight; // 位图的高度,以像素为单位
    WORD biPlanes; // 目标设备的级别,必须为1
    WORD biBitCount// 每个像素所需的位数,必须是1(双色),
    // 4(16色),8(256色)或24(真彩色)之一
    DWORD biCompression; // 位图压缩类型,必须是 0(不压缩),
    // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一
    DWORD biSizeImage; // 位图的大小,以字节为单位
    LONGbiXPelsPerMeter; // 位图水平分辨率,每米像素数
    LONGbiYPelsPerMeter; // 位图垂直分辨率,每米像素数
    DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数
    DWORD biClrImportant;// 位图显示过程中重要的颜色数
    } BITMAPINFOHEADER;

    4. 颜色表
    颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下:

    typedef struct tagRGBQUAD {
    BYTErgbBlue;// 蓝色的亮度(值范围为0-255)
    BYTErgbGreen; // 绿色的亮度(值范围为0-255)
    BYTErgbRed; // 红色的亮度(值范围为0-255)
    BYTErgbReserved;// 保留,必须为0
    } RGBQUAD;
    颜色表中RGBQUAD结构数据的个数有biBitCount来确定:
    当biBitCount=1,4,8时,分别有2,16,256个表项;
    当biBitCount=24时,没有颜色表项。
    位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:
    typedef struct tagBITMAPINFO {
    BITMAPINFOHEADER bmiHeader; // 位图信息头
    RGBQUAD bmiColors[1]; // 颜色表
    } BITMAPINFO;


    5. 位图数据
    位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数:

    当biBitCount=1时,8个像素占1个字节;
    当biBitCount=4时,2个像素占1个字节;
    当biBitCount=8时,1个像素占1个字节;
    当biBitCount=24时,1个像素占3个字节;
    Windows规定一个扫描行所占的字节数必须是
    4的倍数(即以long为单位),不足的以0填充,
    一个扫描行所占的字节数计算方法:
    DataSizePerLine= (biWidth* biBitCount+31)/8;
    // 一个扫描行所占的字节数
    DataSizePerLine= DataSizePerLine/4*4; // 字节数必须是4的倍数
    位图数据的大小(不压缩情况下):
    DataSize= DataSizePerLine* biHeight;

    具体数据举例:
    如某BMP文件开头:
    424D 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 .... ....

    BMP文件可分为四个部分:位图文件头、位图信息头、彩色板、图像数据阵列,在上图中已用*分隔。

    一、图像文件头
      1)1:(这里的数字代表的是"字",即两个字节,下同)图像文件头。424Dh=’BM’,表示是Windows支持的BMP格式。
      2)2-3:整个文件大小。4690 0000,为00009046h=36934。
      3)4-5:保留,必须设置为0。
      4)6-7:从文件开始到位图数据之间的偏移量。4600 0000,为00000046h=70,上面的文件头就是35字=70字节。
    二、位图信息头
      5)8-9:位图图信息头长度。
      6)10-11:位图宽度,以像素为单位。8000 0000,为00000080h=128。
      7)12-13:位图高度,以像素为单位。9000 0000,为00000090h=144。
      8)14:位图的位面数,该值总是1。0100,为0001h=1。
      9)15:每个像素的位数。有1(单色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增强型真彩色)。1000为0010h=16。
      10)16-17:压缩说明:有0(不压缩),1(RLE 8,8位RLE压缩),2(RLE 4,4位RLE压缩,3(Bitfields,位域存放)。RLE简单地说是采用像素数+像素值的方式进行压缩。T408采用的是位域存放方式,用两个字 节表示一个像素,位域分配为r5b6g5。图中0300 0000为00000003h=3。
      11)18-19:用字节数表示的位图数据的大小,该数必须是4的倍数,数值上等于位图宽度×位图高度×每个像素位数。0090 0000为00009000h=80×90×2h=36864。
      12)20-21:用象素/米表示的水平分辨率。A00F 0000为0000 0FA0h=4000。
      13)22-23:用象素/米表示的垂直分辨率。A00F 0000为0000 0FA0h=4000。
      14)24-25:位图使用的颜色索引数。设为0的话,则说明使用所有调色板项。
      15)26-27:对图象显示有重要影响的颜色索引的数目。如果是0,表示都重要。

    三、彩色板
      16)28-35:彩色板规范。对于调色板中的每个表项,用下述方法来描述RGB的值:
      1字节用于蓝色分量
      1字节用于绿色分量
      1字节用于红色分量
      1字节用于填充符(设置为0)
      对于24-位真彩色图像就不使用彩色板,因为位图中的RGB值就代表了每个象素的颜色。
      如,彩色板为00F8 0000 E007 0000 1F00 0000 0000 0000,其中:
      00FB 0000为FB00h=1111100000000000(二进制),是红色分量的掩码。
      E007 0000为 07E0h=0000011111100000(二进制),是绿色分量的掩码。
      1F00 0000为001Fh=0000000000011111(二进制),是红色分量的掩码。
      0000 0000总设置为0。
      将掩码跟像素值进行“与”运算再进行移位操作就可以得到各色分量值。看看掩码,就可以明白事实上在每个像素值的两个字节16位中,按从高到低取5、 6、5位分别就是r、g、b分量值。取出分量值后把r、g、b值分别乘以8、4、8就可以补齐第个分量为一个字节,再把这三个字节按rgb组合,放入存储 器(同样要反序),就可以转换为24位标准BMP格式了。

    环境说明:c#,Visual Studio 2005

    1,新建一个WinForm

    2,添加以下引用
    ESRI.ArcGIS.Controls
    ESRI.ArcGIS.Carto

    3,using如下常用的namespace
    using ESRI.ArcGIS.esriSystem;
    using ESRI.ArcGIS.Carto;
    using ESRI.ArcGIS.Display;
    using ESRI.ArcGIS.Geometry;
    using ESRI.ArcGIS.Utility.COMSupport;
    using ESRI.ArcGIS.Controls;

    4,添加控件
    MenuStrip,
    MapControl,
    TOCControl,(绑定到MapControl)
    LicenceControl,

    5,在Menu中添加打开文档的菜单名并添加相应的响应事件
                     private IMapDocument m_MapDocument= new MapDocumentClass(); //地图文档对象
                    OpenFileDialog dlgFile = new OpenFileDialog();//以对话框选择文档路径
                    string sFilePath;
                    dlgFile.Title = "打开一个地图文档";
                    dlgFile.Filter = "Map Documents(*.mxd)|*.mxd";
                    dlgFile.ShowDialog();
                    sFilePath = dlgFile.FileName;

                    m_MapDocument.Open(sFilePath, "");
                    for (int i = 0; i <= m_MapDocument.MapCount - 1;i++ )
                    {
                        axMapControl1.Map = m_MapDocument.get_Map(i);//axMapControl1为MapControl的自动对象
                    }
                    axMapControl1.Refresh();

    6,在Form的Close事件添加析构代码,否则会异常退出

         ESRI.ArcGIS.Utility.COMSupport.AOUninitialize.Shutdown();

     

     

  • 相关阅读:
    java方法的重载
    java映射一对一关系
    java中必须知道的常用类
    使用eclipse开发java web网页——字符集问题
    使用eclipse开发java web网页
    Tomcat如何配置环境变量
    Java循环中删除list中元素方法的总结
    虚拟机概念(1)
    (24)像素重映射
    (23)霍夫圆
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1885525.html
Copyright © 2011-2022 走看看