Example #1
0
        private void frmImage_Load(object sender, EventArgs e)
        {
            //读取相关数据元素的值,并设置窗体、窗宽、窗位
            this.Width    = items[DicomTags.Columns].ReadValue <ushort>()[0];
            this.Height   = items[DicomTags.Rows].ReadValue <ushort>()[0];
            tsWindow.Text = items[DicomTags.WindowWidth].ReadValue <string>()[0];
            tsLevel.Text  = items[DicomTags.WindowCenter].ReadValue <string>()[0];

            //获取图像像素IOM各数据元素的值
            ushort bs = items[DicomTags.BitsStored].ReadValue <ushort>()[0];
            ushort hb = items[DicomTags.HighBit].ReadValue <ushort>()[0];

            if (items[DicomTags.BitsAllocated].ReadValue <ushort>()[0] == 16)  //OW
            {
                OW ow = new OW(items[DicomTags.PixelData].vrparser.syntax);
                items[DicomTags.PixelData].vrparser = ow;
                owpixels = items[DicomTags.PixelData].ReadValue <short>();
                for (int i = 0; i < owpixels.Length; i++)
                {
                    //BitsAllocated右位移至最低位
                    owpixels[i] = (short)(owpixels[i] >> (hb - (bs - 1)));
                    //逐像素单元转换处理得到像素值,放入owpixels
                }
            }
            else
            {
                OB ob = new OB(items[DicomTags.PixelData].vrparser.syntax);
                items[DicomTags.PixelData].vrparser = ob;
                obpixels = items[DicomTags.PixelData].ReadValue <byte>();
                for (int i = 0; i < obpixels.Length; i++)
                {
                    //BitsAllocated右位移至最低位
                    obpixels[i] = (byte)(obpixels[i] >> (hb - (bs - 1)));
                    //逐像素单元转换处理得到像素值,放入obpixels
                }
            }
        }
Example #2
0
    public VR GetVR(string key)
    {
        //如果对象存在,则直接从享元池获取
        if (VRs.ContainsKey(key))
        {
            return((VR)VRs[key]);
        }
        //如果对象不存在,先创建一个新的对象添加到享元池中,然后返回
        else
        {
            VR fw = null;
            switch (key)
            {
            case "SS": fw = new SS(isBE, false); break;

            case "US": fw = new US(isBE); break;

            case "SL": fw = new SL(isBE, false); break;

            case "UL": fw = new UL(isBE, false); break;

            case "FL": fw = new FL(isBE, false); break;

            case "FD": fw = new FD(isBE, false); break;

            case "DA": fw = new DA(isBE, false); break;

            case "TM": fw = new TM(isBE, false); break;

            case "DT": fw = new DT(isBE, false); break;

            case "AS": fw = new AS(isBE, false); break;

            case "OB": fw = new OB(isBE); break;

            case "OF": fw = new OF(isBE, true); break;

            case "OW": fw = new OW(isBE); break;

            case "SQ": fw = new SQ(isBE, true); break;

            case "LO": fw = new LO(isBE, true); break;

            case "UI": fw = new UI(isBE, true); break;

            case "SH": fw = new SH(isBE, true); break;

            case "AE": fw = new AE(isBE, true); break;

            case "CS": fw = new CS(isBE, true); break;

            case "PN": fw = new PN(isBE, true); break;

            case "DS": fw = new DS(isBE); break;

            case "IS": fw = new IS(isBE, true); break;
                //default for text
                //default: fw = new ST(isBE, false); break;
            }
            VRs.Add(key, fw);
            return(fw);
        }
    }
Example #3
0
 public void Stop()
 {
     OWThread.Abort();
     OW.Abort();
 }