永发信息网

WPF 如何刷新 Canvas

答案:2  悬赏:30  手机版
解决时间 2021-04-04 06:24
WPF页面上有个Canvas,里面有几个Textblock控件,当成模板用
然后写个For循环对这个 Canvas 的大小和里面的控件进行赋值修改,代码如下:
我的想法是,每次执行循环执行修改 Canvas 样式,然后生成 Image 图片放进 图片序列 lstPrintImage 中,可现在的问题是循环执行到第几次获取到的图片都是 Canvas 被赋值前的样子,整个方法执行完之后 Canvas 显示最后一次循环的样式结果,求大师帮忙解Canvas即时生成刷新的问题啊~!!在线等~!!
for (int i = 0; i < lstPreviewCoupon.Count; i++)
{
SetCanvasStyle(lstPreviewCoupon[i]);
lstPrintImage.Add(GetPrintImage(cvPreview));
}

private void SetCanvasStyle(CouponData model)
{
Dispatcher.Invoke(new Action(() =>
{
#region 样式赋值
cvPreview.Width = DrawTool.MillimetersToPixels(Convert.ToDouble(previewTemplate.TEMPLATESIZE_X));
cvPreview.Height = DrawTool.MillimetersToPixels(Convert.ToDouble(previewTemplate.TEMPLATESIZE_Y));
//备注显示设置
lblPreviewCpnRemark.FontSize = Convert.ToDouble(previewTemplate.REMARKSIZE);
lblPreviewCpnRemark.FontFamily = new System.Windows.Media.FontFamily(previewTemplate.REMARKSTYLE);
string str = previewTemplate.TEMPLATEREMARK.Replace("\\n", "\n");
lblPreviewCpnRemark.Text = str;
#endregion
}));
}
最佳答案
看了你的代码只是涉及到控件位置和大小的改变,没有其他精确的计算,那为何还要canvas这种绝对定位的容器?建议说说你的需求,并重新设计构架。
全部回答
如果是需要用brush进行erase那么用system.windows.controls.inkcanvaseditingmode.erasebystroke 如果是希望clear的话,用strokes.clear即可 strokes是指和`inkcanvas binding`的对象 <inkcanvas strokes="{binding strokes}" ... />
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我们慰问边防战士扩写句子
选出与例句活用现象不同的一项例:火尚足以明
李二姐冻冻食品我想知道这个在什么地方
求教武广高铁武汉站至清远站的时间和车次。
如何恢复硬盘数据到半年前的使用状态?
贝宝单据编号是什么,新建公司。财务上需要购
中原银行请问叫支付宝里面的钱转到银行卡上需
电脑主机,在转转二手买的
介绍老鹰风筝的作文大全
一个服务中能不能同事存在rest接口和soap接口
阅读下面文言文,完成8——11题。尚志斋说宋
初次购车需要买哪些保险
除了安坦这药物还有其他的吗
新宝来手动挡的车不启动挂档就咔咔的有响声这
我打字老是爱看键盘,一指禅,怎么解决
推荐资讯
茅台海峡两岸是传销吗
模拟人生2宠物当家的秘籍
宗教改革对近代科学革命有什么影响
个人评语自我评价学生,学生自我评语(描述性
东莞3路车多长时间一班
我家里的热水器最近不知道为什么水压很小,而
ipone6之前的id被锁了,需要注销,才能重新申请
fi赛车为什么没有女人参加
三毛语录百万富翁,关于女作家三毛的一些深层
ISO感光度是什么意思啊?
我们的身边有什么东西可以许愿?
一丝不苟毛如雪猜一动物
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?