Beispiel #1
0
 // 이미지 좌표 -> 화면 좌료
 private Rectangle ImgToDisp(RectangleF rectImg)
 {
     return(ImageBoxUtil.ImgToDisp(rectImg, ZoomFactor, PtPan));
 }
Beispiel #2
0
 // 이미지 좌표 -> 화면 좌료
 private Point ImgToDisp(PointF ptImg)
 {
     return(ImageBoxUtil.ImgToDisp(ptImg, ZoomFactor, PtPan));
 }
Beispiel #3
0
        public new void Invalidate()
        {
            List <Tuple <string, double> > tList = new List <Tuple <string, double> >();

            tList.Add(Tuple.Create("Start", Util.GetTimeMs()));

            double zoom    = GetZoomFactor();
            IntPtr dispBuf = dib.BufPtr;
            int    dispBw  = dib.Width;
            int    dispBh  = dib.Height;
            IntPtr hdc     = dib.Hdc;
            var    id      = new ImageDrawing(dispBuf, dispBw, dispBh, zoom, PtPan);
            var    idWnd   = new ImageDrawing(dispBuf, dispBw, dispBh);

            // 이미지 확대 축소
            if (imgBuf == IntPtr.Zero)
            {
                ImageBoxUtil.Clear(dispBuf, dispBw, dispBh, BackColor.ToArgb(), Option.UseParallelToDraw);
            }
            else
            {
                ImageBoxUtil.DrawImageBufferZoom(imgBuf, imgBw, imgBh, imgBytepp, isImgbufFloat, dispBuf, dispBw, dispBh, PtPan.X, PtPan.Y, zoom, BackColor.ToArgb(), Option.FloatValueMax, lineDrawAction, Option.UseParallelToDraw);
                if (lineDrawAction == null)
                {
                    idWnd.DrawString("LineDrawAction not assigned,\nso i can not display image.", InfoFont, Color.Yellow, 2, 25);
                }
            }

            tList.Add(Tuple.Create("DrawImageBufferZoom", Util.GetTimeMs()));

            // 픽셀값 표시
            if (Option.UseDrawPixelValue)
            {
                DrawPixelValue(id);
            }
            tList.Add(Tuple.Create("DrawPixelValue", Util.GetTimeMs()));

            // ROI 표시
            if (Option.UseDrawRoiRectangles)
            {
                DrawRoiRectangles(id);
                if (isRoiDown)
                {
                    DrawRoiDown(id);
                }
            }
            tList.Add(Tuple.Create("DrawRoiRectangles", Util.GetTimeMs()));

            // 중심선 표시
            if (Option.UseDrawCenterLine)
            {
                DrawCenterLine(id);
            }
            tList.Add(Tuple.Create("DrawCenterLine", Util.GetTimeMs()));

            // PaintBackBuffer이벤트 발생
            OnPaintBackBuffer(dispBuf, dispBw, dispBh); // 여기서 사용자가 정의한 Paint이벤트 함수가 호출됨
            tList.Add(Tuple.Create("OnPaintBackBuffer", Util.GetTimeMs()));

            // Paint이벤트 발생
            using (var g = Graphics.FromHdc(hdc)) {
                base.OnPaint(new PaintEventArgs(g, ClientRectangle));   // 여기서 사용자가 정의한 Paint이벤트 함수가 호출됨
            }
            tList.Add(Tuple.Create("OnPaint", Util.GetTimeMs()));

            // 커서 정보 표시
            if (Option.UseDrawCursorInfo)
            {
                DrawCursorInfo(idWnd, 2, 2);
            }
            tList.Add(Tuple.Create("DrawCursorInfo", Util.GetTimeMs()));

            // 디비그 정보 표시
            if (Option.UseDrawDebugInfo)
            {
                DrawDebugInfo(idWnd);
            }
            tList.Add(Tuple.Create("DrawDebugInfo", Util.GetTimeMs()));


            // 프런트버퍼에다 복사
            dib.BitBlt(IntPtr.Zero);
            tList.Add(Tuple.Create("Render", Util.GetTimeMs()));

            // delta 계산 및 total 계산
            var nextList = tList.Skip(1);
            List <Tuple <string, double> > dtList = nextList.Zip(tList, (next, prev) => Tuple.Create(next.Item1, next.Item2 - prev.Item2)).ToList();

            dtList.Add(Tuple.Create("Total", tList.Last().Item2 - tList.First().Item2));
            dtListList.Add(dtList);
            while (dtListList.Count > Option.TimeCheckCount)
            {
                dtListList.RemoveAt(0);
            }
        }
Beispiel #4
0
 // 화면 좌표 -> 이미지 좌표
 public PointF DispToImg(Point ptDisp)
 {
     return(ImageBoxUtil.DispToImg(ptDisp, GetZoomFactor(), PtPan));
 }
Beispiel #5
0
 // 이미지 좌표 -> 화면 좌료
 public Rectangle ImgToDisp(RectangleF rectImg)
 {
     return(ImageBoxUtil.ImgToDisp(rectImg, GetZoomFactor(), PtPan));
 }
Beispiel #6
0
 // 이미지 좌표 -> 화면 좌료
 public Point ImgToDisp(PointF ptImg)
 {
     return(ImageBoxUtil.ImgToDisp(ptImg, GetZoomFactor(), PtPan));
 }