簡體   English   中英

C#WPF StackPanel中不需要的間距/圖像大小調整

[英]Unwanted Spacing / Image Resizing in C# WPF StackPanel

希望這篇文章很簡單-但是,我找不到任何相關的文章。

我正在構建帶有圖像的水平StackPanel,由於某種原因,其中一個圖像會不斷調整大小,從而導致圖像周圍出現非常不需要的邊框。 我可以做些什么才能將輸出強制為圖像的原始像素大小,或者我可以禁用某些允許該StackPanel稍微調整圖像大小的東西?

您可以在“標題”文本后立即看到導致間隙的邊框

如果仔細觀察,您會看到在標題文本結尾的圖像周圍正出現透明邊框。 我不知道為什么會這樣。 這是圖像的代碼:

Image titleRightCap = new Image();
        titleRightCap.Source = new BitmapImage(new Uri("pack://application:,,,/skins/default/top_r_title_cap.png", UriKind.Absolute));
        borderTop.Children.Add(titleRightCap);
        titleRightCap.Loaded += delegate (object s, RoutedEventArgs e)
        {
            headWidth += titleRightCap.ActualWidth;
        };

這是實時輸出,您可以在其中看到大小差異:

實時輸出

我覺得如果我可以強制大小保持不變,就應該解決此問題,但是我不確定該怎么做。

因此,我不確定為什么會這樣。 但是,這似乎與某種內部數學計算有關。

此項是一個“頂部”邊框控件,該控件是動態生成的,並在窗口更改大小時擴展。 為了動態擴展,有一個帶有圖像畫筆的網格元素,它僅繪制要填充的邊框背景。 但是,這需要邊框控件中所有其他元素的寬度才能正確計算。

Title元素是一個動態生成的標簽,其大小與文本大小相同。 不幸的是,這可以是任何寬度的兩倍,並且使數學難以滿足於填充拉伸的動態網格。

無論哪種方式,StackPanel都會解釋這些大小更改,這是由於某種原因而更改了此Image的大小以補償寬度以精確達到100%寬度。

因此,解決此問題的方法是采用動態生成的“標題”標簽的“寬度”值,並將該值四舍五入到下一個最接近的整數:

titleTextGraphic.Width = Math.Ceiling(titleTextGraphic.ActualWidth);

現在,標有動態縮放寬度的元素應該更改。 運行后,我的邊界現在不再有空隙。

在此處輸入圖片說明

因此,這似乎目前工作正常。 我感謝您提供的幫助,希望對其他遇到類似問題的人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM