我有一个 WPF 控件,其中包含带有图像的面板。我正在尝试对其进行序列化,以便它可以独立加载,而不必在本地文件夹中有图像。
我知道我可以将图像存储为 Base64 字符串,然后可能会加载该备份,但我想做的是包装 ImageSource 类以接受 Base64 字符串作为源。
我研究了一下 ImageSource 类,我相信我对它的工作原理了解得不够多。当我在我的自定义包装类中实现 ImageSource 时,我得到了 2 个我不清楚的方法:
元数据
创建实例核心
我想知道是否有人可以对这些方法有所了解,或者为我指明一个不会让我回到 MSDN 文档的方向。
我有一个WPF控件停靠在WinForms应用程序中的WPF宿主控件中。WPF控件设置为水平和垂直拉伸,并且主机控件停靠在锚定的组框中。
我的WPF控件具有一个Canvas,可以填充其空间,我可以用来放置从Canvas派生的自定义类的子级。
我订阅了Canvas的SizeChanged主事件,并应用了一个比例转换,以便在调整控件大小时画布及其子元素可以像缩放一样缩放和增长,这是可行的,但是由于某些原因,父画布在比率远高于孩子,这是因为缩放比例使孩子在某个点上从画布上掉下来。
这是我的代码:
private void EditorCanvas_SizeChanged(object sender, SizeChangedEventArgs e)
{
if (e.PreviousSize.Width == 0)
return;
double YDiff = e.PreviousSize.Height / e.NewSize.Height;
double XDiff = e.PreviousSize.Width / e.NewSize.Width;
Scale.ScaleY /= YDiff;
Scale.ScaleX /= XDiff;
}
Run Code Online (Sandbox Code Playgroud)
画布的子级似乎以正确的速率缩放,而画布似乎以更高的速率缩放。
是否有人看到任何原因/知道任何可能的原因?
行为图片...请注意较小面板后面的空白区域
之前

缩放比例
