private void TextureImg_MouseLeave(object sender, EventArgs e) { Cursor = Cursors.Default; IsHoveringReisze = false; IsResizing = false; TextureImg.Refresh(); }
private void TextureImg_MouseUp(object sender, MouseEventArgs e) { if (IsResizing) { //Update the bounds on the object if (LstItems.SelectedIndex > -1) { SetNewSizes(NewSizes); } IsResizing = false; TextureImg.Refresh(); } }
private void NUD_ValueChanged(object sender, EventArgs e) { if (LstItems.SelectedIndex > -1 && !IsResizing) { Rectangle Rect = new Rectangle(); Rect.X = Convert.ToInt32(NUDX.Value); Rect.Y = Convert.ToInt32(NUDY.Value); Rect.Width = Convert.ToInt32(NUDW.Value); Rect.Height = Convert.ToInt32(NUDH.Value); SetNewSizes(Rect); TextureImg.Refresh(); } }
private void TextureImg_MouseMove(object sender, MouseEventArgs e) { if (LstItems.SelectedIndex > -1) { IDDTexture Texture = CurrentFile.Textures[LstTextures.SelectedIndex]; IDDTextureElement Element = Texture.Elements[LstItems.SelectedIndex]; int X1 = (int)(Element.X1 * Texture.Resolution.Width); int Y1 = (int)(Element.Y1 * Texture.Resolution.Height); int X2 = (int)(Element.X2 * Texture.Resolution.Width); int Y2 = (int)(Element.Y2 * Texture.Resolution.Height); if (IsResizing) { int DiffX = e.X - ResizeStart.X; int DiffY = e.Y - ResizeStart.Y; if (CurrentCorner == ResizeCorner.None) { int W = X2 - X1; int H = Y2 - Y1; X1 += DiffX; Y1 += DiffY; NewSizes = new Rectangle(X1, Y1, W, H); } else { if ((CurrentCorner & ResizeCorner.Top) != 0) { Y1 = Math.Min(Y1 + DiffY, Y2 - 1); } if ((CurrentCorner & ResizeCorner.Left) != 0) { X1 = Math.Min(X1 + DiffX, X2 - 1); } if ((CurrentCorner & ResizeCorner.Bottom) != 0) { Y2 = Math.Max(Y2 + DiffY, Y1 + 1); } if ((CurrentCorner & ResizeCorner.Right) != 0) { X2 = Math.Max(X2 + DiffX, X1 + 1); } NewSizes = new Rectangle(X1, Y1, X2 - X1, Y2 - Y1); } TextureImg.Refresh(); } else { int W = X2 - X1; int H = Y2 - Y1; const int GS = 12; //Grip size const int GS2 = GS * 2; bool OldHoveringResize = IsHoveringReisze; IsHoveringReisze = false; CurrentCorner = ResizeCorner.None; Point P = e.Location; //Diamond CheckIntersection(new Rectangle(X1 + GS, Y1, W - GS2, GS), P, Cursors.SizeNS, ResizeCorner.Top); CheckIntersection(new Rectangle(X1, Y1 + GS, GS, H - GS2), P, Cursors.SizeWE, ResizeCorner.Left); CheckIntersection(new Rectangle(X1 + GS, Y2 - GS, W - GS2, GS), P, Cursors.SizeNS, ResizeCorner.Bottom); CheckIntersection(new Rectangle(X2 - GS, Y1 + GS, GS, H - GS2), P, Cursors.SizeWE, ResizeCorner.Right); //Square CheckIntersection(new Rectangle(X1, Y1, GS, GS), P, Cursors.SizeNWSE, ResizeCorner.TopLeft); CheckIntersection(new Rectangle(X2 - GS, Y1, GS, GS), P, Cursors.SizeNESW, ResizeCorner.TopRight); CheckIntersection(new Rectangle(X1, Y2 - GS, GS, GS), P, Cursors.SizeNESW, ResizeCorner.BottomLeft); CheckIntersection(new Rectangle(X2 - GS, Y2 - GS, GS, GS), P, Cursors.SizeNWSE, ResizeCorner.BottomRight); if (IsHoveringReisze || (IsHoveringReisze != OldHoveringResize)) { TextureImg.Refresh(); } if (!IsHoveringReisze) { if (new Rectangle(X1, Y1, W, H).Contains(e.Location)) { Cursor = Cursors.SizeAll; } else { Cursor = Cursors.Default; } } } } }
private void LstItems_SelectedIndexChanged(object sender, EventArgs e) { TextureImg.Refresh(); }