// 이미지 좌표 -> 화면 좌료 private Rectangle ImgToDisp(RectangleF rectImg) { return(ImageBoxUtil.ImgToDisp(rectImg, ZoomFactor, PtPan)); }
// 이미지 좌표 -> 화면 좌료 private Point ImgToDisp(PointF ptImg) { return(ImageBoxUtil.ImgToDisp(ptImg, ZoomFactor, PtPan)); }
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); } }
// 화면 좌표 -> 이미지 좌표 public PointF DispToImg(Point ptDisp) { return(ImageBoxUtil.DispToImg(ptDisp, GetZoomFactor(), PtPan)); }
// 이미지 좌표 -> 화면 좌료 public Rectangle ImgToDisp(RectangleF rectImg) { return(ImageBoxUtil.ImgToDisp(rectImg, GetZoomFactor(), PtPan)); }
// 이미지 좌표 -> 화면 좌료 public Point ImgToDisp(PointF ptImg) { return(ImageBoxUtil.ImgToDisp(ptImg, GetZoomFactor(), PtPan)); }