如何在网格内居中放置TextBox元素

用户名

我正在为自己的需要开发WP8应用程序,并希望它具有带文本的小型实时显示块。由于小图块无法显示文本,因此我正在生成带有所需文本的适当图像。这是代码:

WriteableBitmap bmpSmall = new WriteableBitmap(159, 159);
var grid = new Grid();
grid.Width = bmpSmall.PixelWidth;
grid.Height = bmpSmall.PixelHeight;

var background = new Canvas();
background.Width = bmpSmall.PixelWidth;
background.Height = bmpSmall.PixelHeight;

SolidColorBrush backColor = new SolidColorBrush((Color)Application.Current.Resources["PhoneAccentColor"]);
background.Background = backColor;

var textBlock = new TextBlock();
textBlock.Text = "qwerty";
textBlock.FontWeight = FontWeights.Bold;
textBlock.HorizontalAlignment = HorizontalAlignment.Center;
textBlock.VerticalAlignment = VerticalAlignment.Center;
textBlock.FontSize = 28;
textBlock.Foreground = new SolidColorBrush(Colors.White);

grid.Children.Add(textBlock);
bmpSmall.Render(background, null);
bmpSmall.Render(grid, null);
bmpSmall.Invalidate();

using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
    using (IsolatedStorageFileStream imageStream = new IsolatedStorageFileStream("/Shared/ShellContent/smallTile.jpg", System.IO.FileMode.Create, isf))
    {
        bmpSmall.SaveJpeg(imageStream, 159, 159, 0, 100);
    }
}

ShellTile tile = ShellTile.ActiveTiles.First();
FlipTileData tileData = new FlipTileData();
tileData.SmallBackgroundImage = new Uri(@"isostore:/Shared/ShellContent/smallTile.jpg", UriKind.Absolute);
tile.Update(tileData);

结果看起来像:

在此处输入图片说明

如您所见,文本与左上角对齐。问题是“为什么”?既然你可以设置textBlock.HorizontalAlignmenttextBlock.VerticalAlignment-我希望它在图像的中心。例如,以下XAML看起来像您期望的一样,就像我需要的:

<Grid Width="159" Height="159">
    <Grid.Background>
        <SolidColorBrush Color="{StaticResource PhoneAccentColor}"/>
    </Grid.Background>
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" FontSize="28" Foreground="White">qwerty</TextBlock>
</Grid>

我错过了什么?如何将文字居中?

龙胆

尝试以下代码:

       WriteableBitmap bmpSmall = new WriteableBitmap(159, 159);
        var grid = new Grid();
        grid.Width = bmpSmall.PixelWidth;
        grid.Height = bmpSmall.PixelHeight;

        var background = new Canvas();
        background.Width = bmpSmall.PixelWidth;
        background.Height = bmpSmall.PixelHeight;

        SolidColorBrush backColor = new SolidColorBrush((Color)Application.Current.Resources["PhoneAccentColor"]);
        background.Background = backColor;

        var textBlock = new TextBlock();
        textBlock.Width = bmpSmall.PixelWidth;

        textBlock.Text = "qwerty";
        textBlock.FontWeight = FontWeights.Bold;
        textBlock.HorizontalAlignment = HorizontalAlignment.Stretch;
        textBlock.VerticalAlignment = VerticalAlignment.Center;
        textBlock.FontSize = 28;
        textBlock.Foreground = new SolidColorBrush(Colors.White);
        textBlock.TextAlignment = TextAlignment.Center;
        grid.Children.Add(background);
        grid.Children.Add(textBlock);
        grid.Measure(new Size(bmpSmall.PixelWidth, bmpSmall.PixelHeight));
        grid.Arrange(new Rect(0,0,bmpSmall.PixelWidth, bmpSmall.PixelHeight));
        grid.UpdateLayout();
        bmpSmall.Render(grid, null);
        bmpSmall.Invalidate();

我将TextBlock宽度设置为与图块的其余部分相同,并设置HorizontalAlignment为拉伸,以便控件将占用图块的整个宽度。然后,将TextAlignment属性设置TextAlignment.Center,以使文本居中。希望有帮助!

编辑:显然,对于可写位图,您必须自己执行度量/排列/布局步骤,以便呈现控件,就像您认为应该呈现它们一样。试试这个更新的代码,这次应该可以用了!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在引导网格内居中放置文本

来自分类Dev

如何在div内水平居中放置网格块?

来自分类Dev

如何在SVG g元素内居中放置文本?

来自分类Dev

如何在div内居中放置元素?

来自分类Dev

如何在div元素内居中放置文本?

来自分类Dev

MPAndroidChart,如何在网格线上方居中放置XLabel?

来自分类Dev

如何在网格中垂直居中放置所有文本?

来自分类Dev

MPAndroidChart,如何在网格线上方居中放置XLabel?

来自分类Dev

如何在Bootstrap 3+中的col元素内居中放置图像

来自分类Dev

在网格(CSS)中居中放置图像

来自分类Dev

如何在CSS中居中放置元素?

来自分类Dev

如何在父div内居中放置数据?

来自分类Dev

如何在锚标签内居中放置文本

来自分类Dev

如何在LI内垂直居中放置图像

来自分类Dev

如何在div内居中放置引导容器?

来自分类Dev

如何在父div内居中放置数据?

来自分类Dev

如何在白色内居中放置文本?

来自分类Dev

如何在div内居中放置div?

来自分类Dev

如何在div内居中放置图片?

来自分类Dev

如何在div内居中放置CSS精灵?

来自分类Dev

无法在div内居中放置元素

来自分类Dev

在元素内居中放置文本

来自分类Dev

在元素内居中放置文本

来自分类Dev

如何在视图中放置网格

来自分类Dev

如何在Shiny中将CSS元素居中放置在另一个元素之下

来自分类Dev

如何在移动浏览器的视口宽度和高度上居中放置元素?

来自分类Dev

如何在浮动按钮元素之间垂直和水平居中放置文本?

来自分类Dev

如何在导航栏中垂直居中放置所有元素?

来自分类Dev

如何在UITableView单元格内居中放置UIImage?

Related 相关文章

热门标签

归档