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
}));
}
WPF 如何刷新 Canvas
答案:2 悬赏:30 手机版
解决时间 2021-04-04 06:24
- 提问者网友:箛茗
- 2021-04-03 18:33
最佳答案
- 五星知识达人网友:你哪知我潦倒为你
- 2021-04-03 19:02
看了你的代码只是涉及到控件位置和大小的改变,没有其他精确的计算,那为何还要canvas这种绝对定位的容器?建议说说你的需求,并重新设计构架。
全部回答
- 1楼网友:千杯敬自由
- 2021-04-03 20:10
如果是需要用brush进行erase那么用system.windows.controls.inkcanvaseditingmode.erasebystroke 如果是希望clear的话,用strokes.clear即可 strokes是指和`inkcanvas binding`的对象 <inkcanvas strokes="{binding strokes}" ... />
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯