private bool AddRegion(TRegion Region) { if (m_xOverlay != null) { float[] p = Region.p; XRegion xRegion = new XRegion(Region.m_eRShape, p[0], p[1], p[2], p[3], p[4]); m_xOverlay.Add(xRegion); xRegion.ID = Region.m_nID; xRegion.BorderColor = Color.FromArgb(Region.m_cBorderColor); xRegion.FillColor = Color.FromArgb(Region.m_cFillColor); xRegion.BorderStyle = Region.m_dBorderStyle; xRegion.ControlStyle = (REGION_CONTROL_STYLES)Region.m_RCS; xRegion.Caption = Region.m_sCaption; string sImagePath = Region.m_sFillImagePath; if (sImagePath != null && sImagePath != "") { Image FillImage = Image.FromFile(sImagePath); if (xRegion.FillImage != null) { xRegion.FillImage.Dispose(); } xRegion.FillImage = new Bitmap(FillImage); FillImage.Dispose(); } return(true); } return(false); }
protected override void OnMouseUp(MouseEventArgs e) { if ((e.Button & MouseButtons.Left) != 0) { PointF point = new PointF(e.X - m_pOrigin.X, e.Y - m_pOrigin.Y); switch (m_eControlMode) { case E_VIEW_CONTROL_MODE.VCM_POINT: { if (ModifierKeys == Keys.Alt) { REGION_CONTROL_STYLES HitRCS = REGION_CONTROL_STYLES.NONE; XRegion xRegion = (XRegion)m_xOverlay.First(); for (int n = 0; n < m_xOverlay.Count; n++) { if (xRegion != null) { HitRCS = xRegion.HitTest(point.X / m_fZ, point.Y / m_fZ, xRegion.Spaces / m_fZ, ModifierKeys); if (HitRCS != REGION_CONTROL_STYLES.NONE) { if (m_xActiveRegion != null && xRegion != null && m_xActiveRegion != xRegion) { m_xActiveRegion.SetAlign(xRegion, HitRCS); break; } } else { xRegion.SetAlign(null, HitRCS); } xRegion = (XRegion)m_xOverlay.Next(); } } } else if (m_xSelectRegion.ControlSelect == REGION_CONTROL_STYLES.BR) { SelectControl(); m_xSelectRegion.ControlSelect = REGION_CONTROL_STYLES.NONE; Refresh(); } if (m_bMouseMove == true) { m_bMouseMove = false; Refresh(); } InvokeOnClick(this, null); } break; case E_VIEW_CONTROL_MODE.VCM_PAN: { m_pOrigin.X = e.X - m_pStartPan.X; m_pOrigin.Y = e.Y - m_pStartPan.Y; Refresh(); } break; } } }
private void Set(XRegion xRegion) { base.Set(xRegion); m_cBorderColor = xRegion.BorderColor; m_cFillColor = xRegion.FillColor; m_cFillImage = new Bitmap(xRegion.FillImage); m_dBorderStyle = xRegion.BorderStyle; m_RCS = xRegion.ControlStyle; m_SelectRCS = xRegion.ControlSelect; m_sCaption = xRegion.Caption; }
public Bitmap GetRegionImage(XRegion xRegion, bool bOutputImage) { if (xRegion != null) { Bitmap SocBitmap; if (bOutputImage == true) { SocBitmap = m_OutputImage; } else { SocBitmap = m_InputImage; } RectangleF RectF = xRegion.Rect(); int nLeft = (int)(RectF.Left + 0.5f); int nTop = (int)(RectF.Top + 0.5f); int nRight = (int)(RectF.Right + 0.5f); int nBottom = (int)(RectF.Bottom + 0.5f); int nWidth = nRight - nLeft; int nHeight = nBottom - nTop; try { BitmapData SocBitmapData = SocBitmap.LockBits(new Rectangle(nLeft, nTop, nWidth, nHeight) , ImageLockMode.ReadOnly, SocBitmap.PixelFormat); if (SocBitmapData != null) { Bitmap BoundMap = new Bitmap(nWidth, nHeight, SocBitmapData.Stride, SocBitmapData.PixelFormat, SocBitmapData.Scan0); SocBitmap.UnlockBits(SocBitmapData); if (xRegion.T == 0) { return(BoundMap); } else { Bitmap RotateMap = GetRotateImage(BoundMap, xRegion.W, xRegion.H, xRegion.T); BoundMap.Dispose(); return(RotateMap); } } } catch (Exception pe) { string sMsg = pe.ToString(); } } return(null); }
private void AddSelect(XRegion xRegion) { if (xRegion != null) { //if (null == m_xSelect.Find(xRegion.ID)) { m_xSelect.Add(xRegion); if (ChangeSelect != null) { ChangeSelect(this); } } } }
public void SetAlign(XRegion TargetRegion, REGION_CONTROL_STYLES AlignTargetStyles) { if ((m_RCS & AlignTargetStyles) != 0) { if (TargetRegion.m_RegionAlign.TargetRegion != this) { m_RegionAlign.SetAlign(TargetRegion, GetControlPositon(AlignTargetStyles), GetControlPositon(m_ObjectAlignRCS)); Align(); } } else { m_RegionAlign.SetAlign(null, CONTROL_POSITION.TT, CONTROL_POSITION.TT); } }
private void StaticStatic(Graphics gp) { if (m_xStatic != null) { XRegion xRegion = (XRegion)m_xStatic.First(); for (int n = 0; n < m_xStatic.Count; n++) { if (xRegion != null) { xRegion.Draw(gp, m_pOrigin.X, m_pOrigin.Y, m_fZ, m_fZ); xRegion = (XRegion)m_xStatic.Next(); } } } }
private void DrawOverlay(Graphics gp) { if (m_xOverlay != null) { XRegion xRegion = (XRegion)m_xOverlay.First(); for (int n = 0; n < m_xOverlay.Count; n++) { if (xRegion != null) { xRegion.Draw(gp, m_pOrigin.X, m_pOrigin.Y, m_fZ, m_fZ); xRegion = (XRegion)m_xOverlay.Next(); } } } }
public bool SaveOverlay(string sPath) { if (sPath != null && sPath != "") { try { sPath = sPath.ToLower(); string sImagePath = sPath.Replace(".xml", "_"); XmlSerializer serializer = new XmlSerializer(typeof(TRegion[])); TextWriter writer = new StreamWriter(sPath); uint nCount = m_xOverlay.Count; TRegion[] Item = new TRegion[nCount]; XRegion Region = (XRegion)m_xOverlay.First(); for (int n = 0; n < nCount; n++) { if (Region != null) { Item[n] = new TRegion(); Item[n].Copy(Region); if (Region.FillImage != null) { string sImageRegionPath = sImagePath + Region.ID.ToString() + ".bmp"; if (File.Exists(sImageRegionPath)) { File.Delete(sImageRegionPath); } Region.FillImage.Save(sImageRegionPath); Item[n].m_sFillImagePath = sImageRegionPath; } Region = (XRegion)m_xOverlay.Next(); } } serializer.Serialize(writer, Item); writer.Close(); return(true); } catch (Exception pe) { string sMsg = pe.ToString(); } } return(false); }
public void RefreshAlign() { if (m_xOverlay != null) { XRegion Region = (XRegion)m_xOverlay.First(); uint nCount = m_xOverlay.Count; for (int n = 0; n < nCount; n++) { if (Region != null) { Region.Align(); Region = (XRegion)m_xOverlay.Next(); } } } }
public void SetAlign(XRegion TargetRegion, CONTROL_POSITION AlignTarget, CONTROL_POSITION AlignObject) { if (m_RCS != REGION_CONTROL_STYLES.NONE) { if (TargetRegion != null) { if (TargetRegion.m_RegionAlign.TargetRegion != this) { m_RegionAlign.SetAlign(TargetRegion, AlignTarget, AlignObject); Align(); } } else { m_RegionAlign.SetAlign(); } } }
public void MoveSelect(float fX, float fY) { XRegion xRegion = (XRegion)m_xSelect.First(); if (xRegion != null) { for (int n = 0; n < m_xSelect.Count; n++) { if (xRegion != null) { xRegion.X += fX; xRegion.Y += fY; xRegion = (XRegion)m_xSelect.Next(); } } Refresh(); } }
public void SelectControl() { if (m_xOverlay != null) { XRegion xRegion = (XRegion)m_xOverlay.First(); for (int n = 0; n < m_xOverlay.Count; n++) { if (xRegion != null) { if (xRegion.InnerRegion(m_xSelectRegion.X, m_xSelectRegion.Y, m_xSelectRegion.W, m_xSelectRegion.H) == true) { xRegion.ControlSelect = REGION_CONTROL_STYLES.MC; AddSelect(xRegion); } xRegion = (XRegion)m_xOverlay.Next(); } } } }
public void SelectAll() { m_xSelect.Empty(); if (m_xOverlay != null) { uint nCount = m_xOverlay.Count; if (nCount > 0) { XRegion xRegion = (XRegion)m_xOverlay.First(); for (int n = 0; n < nCount; n++) { if (xRegion != null) { m_xSelect.Add(xRegion); xRegion = (XRegion)m_xOverlay.Next(); } } } Refresh(); } }
public void Copy(XRegion Item) { m_nID = Item.ID; m_eRShape = Item.RegionShape; Array.Copy(Item.Get(), p, 5); m_cBorderColor = Item.BorderColor.ToArgb(); m_cFillColor = Item.FillColor.ToArgb(); m_RCS = (uint)Item.ControlStyle; m_dBorderStyle = Item.BorderStyle; m_sCaption = Item.Caption; RegionAlign RAlign = Item.RegionAlign; if (RAlign != null) { m_eAlignTarget = RAlign.AlignTarget; m_eAlignObject = RAlign.AlignObject; if (RAlign.TargetRegion != null) { m_TargetRegionID = RAlign.TargetRegion.ID; } } }
private void LButtonDown(PointF point) { if (m_xOverlay != null) { m_xActiveRegion = null; XRegion xRegion = (XRegion)m_xOverlay.First(); for (int n = 0; n < m_xOverlay.Count; n++) { if (xRegion != null) { if (REGION_CONTROL_STYLES.NONE != xRegion.SelectControl(point.X / m_fZ, point.Y / m_fZ, xRegion.Spaces / m_fZ, ModifierKeys)) { m_xActiveRegion = xRegion; break; } else if (REGION_CONTROL_STYLES.NONE != xRegion.ControlSelect) { if (m_xActiveRegion == null) { m_xActiveRegion = xRegion; } else { if (m_xActiveRegion.ControlSelect == REGION_CONTROL_STYLES.MC && (xRegion.ControlSelect != REGION_CONTROL_STYLES.MC || xRegion.InnerRegion(m_xActiveRegion) == true)) { m_xActiveRegion.ControlSelect = REGION_CONTROL_STYLES.NONE; m_xActiveRegion = xRegion; } else { xRegion.ControlSelect = REGION_CONTROL_STYLES.NONE; } } } xRegion = (XRegion)m_xOverlay.Next(); } } if (ModifierKeys != Keys.Alt) { if (m_xActiveRegion == null) { m_xSelect.Empty(); m_xSelectRegion.Set(point.X / m_fZ, point.Y / m_fZ, 1, 1, 0); m_xSelectRegion.SelectControl(point.X / m_fZ, point.Y / m_fZ, m_xSelectRegion.Spaces / m_fZ, ModifierKeys); m_xSelectRegion.ControlStyle = REGION_CONTROL_STYLES.BR; m_xSelectRegion.ControlSelect = REGION_CONTROL_STYLES.BR; } else { if (ModifierKeys == Keys.Control || m_xSelect.Count > 1) { AddSelect(m_xActiveRegion); float fCx = m_xActiveRegion.X; float fCy = m_xActiveRegion.Y; PointF Fix = m_xActiveRegion.Fix; xRegion = (XRegion)m_xSelect.First(); for (int n = 0; n < m_xSelect.Count; n++) { if (xRegion != null) { xRegion.ControlSelect = m_xActiveRegion.ControlSelect; if (m_xActiveRegion.ControlSelect == REGION_CONTROL_STYLES.MC) { PointF FixN = new PointF(Fix.X - fCx + xRegion.X, Fix.Y - fCy + xRegion.Y); xRegion.Fix = FixN; } xRegion = (XRegion)m_xSelect.Next(); } } } else { xRegion = (XRegion)m_xOverlay.First(); for (int n = 0; n < m_xOverlay.Count; n++) { if (xRegion != null) { if (m_xActiveRegion != xRegion && m_xSelect.Count == 1) { xRegion.ControlSelect = REGION_CONTROL_STYLES.NONE; } xRegion = (XRegion)m_xOverlay.Next(); } } m_xSelect.Empty(); AddSelect(m_xActiveRegion); } m_xOverlay.Exchange(m_xOverlay.First(), m_xActiveRegion); } Refresh(); } } }
public void SetAlign(XRegion iTargetRegion, CONTROL_POSITION iAlignTarget, CONTROL_POSITION iAlignObject) { AlignTarget = iAlignTarget; AlignObject = iAlignObject; TargetRegion = iTargetRegion; }
public void SetAlign() { AlignTarget = CONTROL_POSITION.TT; AlignObject = CONTROL_POSITION.TT; TargetRegion = null; }
public bool LoadOverlay(string sPath) { if (sPath != null && sPath != "") { uint uCount = m_xOverlay.Count; XRegion Region = (XRegion)m_xOverlay.First(); for (int n = 0; n < uCount; n++) { if (Region != null) { if (Region.FillImage != null) { Region.FillImage.Dispose(); } Region = (XRegion)m_xOverlay.Next(); } } m_xOverlay.Empty(); XmlSerializer serializer = new XmlSerializer(typeof(TRegion[])); FileStream fs = null; try { fs = new FileStream(sPath, FileMode.Open); if (fs != null) { TRegion[] pItem = (TRegion[])serializer.Deserialize(fs); fs.Close(); if (pItem != null) { int n; int nCount = pItem.Length; for (n = 0; n < nCount; n++) { AddRegion(pItem[n]); } for (n = 0; n < nCount; n++) { int nTargetID = pItem[n].m_TargetRegionID; if (nTargetID > 0) { XRegion xRegion = (XRegion)m_xOverlay.Find(pItem[n].m_nID); if (xRegion != null) { XRegion xTargetRegion = (XRegion)m_xOverlay.Find(nTargetID); if (xTargetRegion != null) { xRegion.SetAlign(xTargetRegion, pItem[n].m_eAlignTarget, pItem[n].m_eAlignObject); } } } } } Refresh(); return(true); } } catch (Exception pe) { if (fs != null) { fs.Close(); } string sMsg = pe.ToString(); Refresh(); } } return(false); }
protected override void OnMouseMove(MouseEventArgs e) { PointF point = new PointF(e.X - m_pOrigin.X, e.Y - m_pOrigin.Y); switch (m_eControlMode) { case E_VIEW_CONTROL_MODE.VCM_POINT: { if ((e.Button & MouseButtons.Left) != 0) { m_bMouseMove = true; if (ModifierKeys == Keys.Alt && m_xOverlay != null) { XRegion xRegion = (XRegion)m_xOverlay.First(); for (int n = 0; n < m_xOverlay.Count; n++) { if (xRegion != null) { xRegion.HitTest(point.X / m_fZ, point.Y / m_fZ, xRegion.Spaces / m_fZ, ModifierKeys); xRegion = (XRegion)m_xOverlay.Next(); } } } if (m_xActiveRegion != null && m_xOverlay != null && m_xOverlay.Count != 0) { m_xActiveRegion.Control(point.X, point.Y, m_fZ, m_fZ); if (m_xSelect.Count > 1) { if (m_xActiveRegion.ControlSelect == REGION_CONTROL_STYLES.MC) { XRegion xRegion = (XRegion)m_xSelect.First(); for (int n = 0; n < m_xSelect.Count; n++) { if (xRegion != null) { xRegion.Control(point.X, point.Y, m_fZ, m_fZ); xRegion = (XRegion)m_xSelect.Next(); } } } } Refresh(); } else if (m_xSelectRegion.ControlSelect == REGION_CONTROL_STYLES.BR) { m_xSelectRegion.Control(point.X, point.Y, m_fZ, m_fZ); Refresh(); } } } break; case E_VIEW_CONTROL_MODE.VCM_PAN: { if ((e.Button & MouseButtons.Left) != 0) { m_pOrigin.X = e.X - m_pStartPan.X; m_pOrigin.Y = e.Y - m_pStartPan.Y; CalcScreen(); Refresh(); } } break; } }