我正在开发一个UWP应用程序,我正在创建我自己的UI组件。到目前为止,我一直在使用WinForms,有OnPaint
方法,我可以使用它来覆盖定制组件的绘制方式。现在我正在使用UWP,我想知道是否有类似的方法可以用来绘制自定义组件。
我的一个OnPaint
方法看起来像这样:
protected override void OnPaint(PaintEventArgs e)
{
int buttonHeight = Height;
int buttonWidth = Width;
int imgHeight = Height;
int imgWidth = Height;
int textPadding = (Height - FontHeight) / 2;
int textStartX = imgWidth + textPadding;
int textStartY = textPadding - 3; // Have to get rid of 3, otherwise it's off center
Graphics g = e.Graphics;
FillRoundedRectangle(g, new SolidBrush(ButtonColor()), new Rectangle(0, 0, Width, Height), 10); // Background
if (ImageOnly == Mode.True)
{
g.DrawImage(Image, new Rectangle((buttonWidth / 2) - (imgWidth / 2), (buttonHeight / 2) - (imgHeight / 2), imgWidth, imgHeight));
}
else
{
g.DrawImage(Image, new Rectangle(0, 0, imgWidth, imgHeight));
g.DrawString(Text, ButtonFont, new SolidBrush(Foreground), new Point(textStartX, textStartY));
}
}
1条答案
按热度按时间yhqotfr81#
UWP没有像
OnPaint
这样的方法,但您可以尝试在UWP User Control中使用Win2D CanvasDraw。MyUserControl1.xaml
MyUserControl1.xaml.cs
MainPage. xaml