/// <summary> /// Metoda wywoływana w celu zaktualizowaniu zawartości tekstowej wpisu (Content), /// w oparciu o wartości posczególnych właściowości bieżącego obiektu. /// </summary> protected override void UpdateContent() { StringBuilder content = new StringBuilder(); content.Append(Format.ToString()); content.Append(": "); content.Append(Layer.ToString()); content.Append(","); content.Append(GetFormattedTiming(TimingStart)); content.Append(","); content.Append(GetFormattedTiming(TimingEnd)); content.Append(","); content.Append(Style); content.Append(","); content.Append(Name); content.Append(","); content.Append(MarginL.ToString(marginFormat)); content.Append(","); content.Append(MarginR.ToString(marginFormat)); content.Append(","); content.Append(MarginV.ToString(marginFormat)); content.Append(","); content.Append(Effect); content.Append(","); content.Append(Text); Content = content.ToString(); }
/// <summary> /// Funkcja haszująca. /// </summary> /// <returns></returns> public override int GetHashCode() { return(Format.GetHashCode() + Layer.GetHashCode() + Style.GetHashCode() + Name.GetHashCode() + MarginL.GetHashCode() + MarginR.GetHashCode() + MarginV.GetHashCode() + Effect.GetHashCode() + Text.GetHashCode() + base.GetHashCode()); }
// PRZESUWANIE KOMPONENTU private new void MouseMove(object sender, MouseEventArgs e) { // JEŚLI WCIŚNIĘTY LEWY PRZYCISK MYSZY NA JAKIMŚ KOMPONENCIE if (e.LeftButton == MouseButtonState.Pressed) { if (MovingObject is FrameworkElement tmp) { bool isMargin = false; if (tmp.Name.Contains("Margin")) { isMargin = true; } var mainCanvasPos = e.GetPosition(MainCanvas); var xNewPosition = mainCanvasPos.X - FirstXPos; var yNewPosition = mainCanvasPos.Y - FirstYPos; var lMargin = tmp.Name.Contains("MarginL"); var rMargin = tmp.Name.Contains("MarginR"); var tMargin = tmp.Name.Contains("MarginT"); var bMargin = tmp.Name.Contains("MarginB"); // JEŚLI PRZESÓWAMY MARGINESY TO SideLimit = POZYCJE MARGINESU W PRZECIWNYM WYPADKU SideLimit = POZYCJE BOCZNE CANVASU var LSideLimit = lMargin ? 0 : (double)MarginL.GetValue(Canvas.LeftProperty); var RSideLimit = rMargin ? MainCanvas.ActualWidth : (double)MarginR.GetValue(Canvas.LeftProperty); var TopLimit = tMargin ? 0 : (double)MarginT.GetValue(Canvas.TopProperty); var BotLimit = bMargin ? MainCanvas.ActualHeight : (double)MarginB.GetValue(Canvas.TopProperty); if (MainVM.HiedeMargins) { LSideLimit = 0; RSideLimit = MainCanvas.ActualWidth; TopLimit = 0; BotLimit = MainCanvas.ActualHeight; } // PRZESÓWANIE PO OSI X - LEWO, PRAWO - OGRANICZENIE DO ROZMIARÓW CANVASA LUB MARGINESÓW if (xNewPosition >= LSideLimit) { if (xNewPosition + tmp.ActualWidth <= RSideLimit) { // PRZESUNIĘCIE KOMPONENTU W POZIOMIE ZGODNIE Z RUCHEM MYSZKI tmp.SetValue(Canvas.LeftProperty, xNewPosition); } else { // POPRAWIA PROBLEM NIEDOCIĄGNIĘCIA KOMPONENTU DO PRAWEGO MARGINESU PRZY SZYBKIM PRZESUNIĘCIU MYSZKĄ if (tMargin || bMargin) { ; } else { tmp.SetValue(Canvas.LeftProperty, RSideLimit - tmp.ActualWidth); } } } else { // POPRAWIA PROBLEM NIEDOCIĄGNIĘCIA KOMPONENTU DO LEWWEGO MARGINESU PRZY SZYBKIM PRZESUNIĘCIU MYSZKĄ if (tMargin || bMargin) { ; } else { tmp.SetValue(Canvas.LeftProperty, LSideLimit); } } // PRZESÓWANIE PO OSI Y - GÓRA, DÓŁ - OGRANICZENIE DO ROZMIARÓW CANVASA LUB MARGINESÓW if (yNewPosition >= TopLimit) { if (yNewPosition + tmp.ActualHeight <= BotLimit) { // PRZESUNIĘCIE KOMPONENTU W PIONIE ZGODNIE Z RUCHEM MYSZKI tmp.SetValue(Canvas.TopProperty, yNewPosition); } else { if (isMargin) { return; } // POPRAWIENIE DOCIĄGNIĘCIA DO DOLNEGO MARGINESU tmp.SetValue(Canvas.TopProperty, BotLimit - tmp.ActualHeight); } } else { if (isMargin) { return; } // POPRAWIENIE DOCIĄGNIĘCIA DO GÓRNEGO MARGINESU tmp.SetValue(Canvas.TopProperty, TopLimit); } } } }