wpf(c#)怎样复制图片( *** 作图片的时候数据库只存放图片所在的路径)

wpf(c#)怎样复制图片( *** 作图片的时候数据库只存放图片所在的路径),第1张

using System.IO string dest=Path.Combin("c:\image",Path.GetFileName(filename))

File.Copy(filename,dest )

你往C盘复制文件可能需要管理员权限

1.这个需要手动吧?给个复制的按钮.然后在内存表中做 *** 作,再复制给你需要粘贴的datagrid.

2.如果你想把内容写到剪切板中,那还要规范数据类型和格式,那个就比较麻烦了.

我不知道你想要的效果是前者还是后者?

使用 XamlReader 和 XamlWrite 是可以复用一个 UIElement.

但在保存时最好指定 xmlns. 另外, 如果将要复用的 UIElement (例如 Canvas) 定义为一种 Resource, 则只能添加一次,否则,出现:

Specified Visual is already a child of another Visual or the root of a CompositionTarget.

这种错误.

但我给个方便的例子,不用 xaml Reader/Writer 来完成对 UIElement 或 FrameworkElement 的复制/重用:

楼主是用 Canvas, 然后在 Canvas 里放一些矢量图(其实放什么不重要),然后显示 200 个这样的 Canvas, 那好,将这个 原始的 Canvas 定义为一种资源:

<Window .........> // 这里省略号表示省略了一些内容(例如 xmlns)

<Window.Resources>

<ControlTemplate x:Key="myCanvas">

<Canvas>

<Image Source="abc.png"/>

<!-- 这里不知道楼主是怎么写的,但不重要,因为它是 Canvas 的子元素 -->

</Canvas>

</ControlTemplate>

</Window.Resources>

<Grid x:Name="LayoutRoot">

<!-- 我们要在这个 Grid 放置 200 个 定义在资源中的 Canvas -->

</Grid>

</Window>

下面是后台的逻辑 code:

怎么触发自己设置

void Display200Canvas()

{

for(int i=0i<200i++)

{

Control ctrl=new Control()

ctrl.Template = Window.Resources["myCanvas"] As ControlTemplate

// 这里设置一下 ctrl 的位置, 不要重叠就可以了,怎么设置就略去了

// .....

LayoutRoot.Children.Add(ctrl)

}

}

完成~

主要是利用 Control 控件加载 ControlTemplate, 而 这个 ControlTemplate 就是你所要显示的东西,它作为 xaml 中的 资源 定义在 ControlTemplate 元素中.

实际上这并不限是 Canvas.


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11695557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存