Image控件加载图片包括加载动态图片,加载静态图片两种方式。
一。加载动态图片通过生成一个BitmapImage,创建该对象后,赋给Image的Source即可。加载的形式:

示例1

 BitmapImage myBitmapImage =new BitmapImage();
myBitmapImage.BeginInit();
//取得数据库存储的图片字段,MS-SQL的Image类型
Byte[] mybyte = ReadImage();
myBitmapImage.StreamSource =new MemoryStream(mybyte);
myBitmapImage.EndInit();
myImage.Width = myBitmapImage.Width/;
myImage.Height = myBitmapImage.Height/;
myImage.Source = myBitmapImage;

示例2

            //加载动态图片
BitmapImage img = new BitmapImage();
img.BeginInit();
Uri imgUri = new Uri(@"K:\Picture\jpg\1.jpg",UriKind.Absolute);
img.UriSource = imgUri;
img.EndInit(); imageOne.Width = img.Width / ;
imageOne.Height = img.Height / ;
imageOne.Source = img;

二.加载系统目录中已经存在的图片

可以采用WPF中的pack://application:,,,格式来加载,比 如在系统的Resource目录下的图片,我们可以这样定义
ImgDev.Source = new BitmapImage(new Uri(pack://application:,,,/Resources/aa.jpg));

示例1:

        void ImageThree_Loaded(object sender, RoutedEventArgs e)
{
imgOne.Source = new BitmapImage(new Uri(@"K:\Picture\jpg\1.jpg",UriKind.Absolute));
}

前台设置:

        <Image Name="imgOne" Opacity="0.5"
HorizontalAlignment="Left"
Height="208" Margin="24,22,0,0"
VerticalAlignment="Top" Width="404"
ScrollViewer.CanContentScroll="True"
/>

显示结果:

 三。可拖动图片显示

后台代码:

        public ImageFourth()
{
InitializeComponent();
canvasOne.MouseMove += ImageFourth_MouseMove;
}
//获取文件夹下的图片
int count = ;
string path = @"K:\Picture\jpg";
bool IsMouseDown = false;
Size spanDown = Size.Empty;
object mouseDownControl = null;
private void Button_Click(object sender, RoutedEventArgs e)
{
if (Directory.Exists(path))
{
string[] files = Directory.GetFiles(path);
foreach (string filename in files)
{
count++;
Image img = new Image();
img.Source = new BitmapImage(new Uri(filename, UriKind.Absolute));
img.Width = ;
img.Height = ;
img.Margin = new Thickness();
img.Stretch = Stretch.Fill;
Canvas.SetLeft(img, count * );
Canvas.SetTop(img, count * ); img.MouseDown += img_MouseDown;
img.MouseUp += img_MouseUp;
canvasOne.Children.Add(img);
}
}
}
//鼠标移动
void ImageFourth_MouseMove(object sender, MouseEventArgs e)
{
if (IsMouseDown)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Point movePoint = e.GetPosition(canvasOne); Image downControl = (Image)mouseDownControl;
Canvas.SetLeft(downControl, movePoint.X - spanDown.Width);
Canvas.SetTop(downControl, movePoint.Y - spanDown.Height);
}
}
}
//窗体鼠标松开
void img_MouseUp(object sender, MouseButtonEventArgs e)
{
if (IsMouseDown)
{
IsMouseDown = false;
}
}
//窗体鼠标按下事件
void img_MouseDown(object sender, MouseButtonEventArgs e)
{
Image downControl = (Image)sender;
if (downControl != null)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Point mouseDownPoint = e.GetPosition(canvasOne); spanDown = new Size();
spanDown.Width = mouseDownPoint.X - Canvas.GetLeft(downControl);
spanDown.Height = mouseDownPoint.Y - Canvas.GetTop(downControl); IsMouseDown = true;
mouseDownControl = sender;
}
}
}

前台设置:

        <ScrollViewer Name="scrllOne" Grid.Row="1"
>
<Canvas Name="canvasOne" Margin="10"
Background="LightPink"
>
<!--使用Cavas滚动条没有出现作用-->
<!--<Ellipse Width="600" Height="500" Stroke="DeepSkyBlue" StrokeThickness="2"></Ellipse>-->
</Canvas>
<!--使用环绕面板可以出现滚动条-->
<!-- <WrapPanel Name="wrapOne">
<Ellipse Width="600" Height="500" Stroke="DeepSkyBlue" StrokeThickness="2"></Ellipse>
</WrapPanel>-->
</ScrollViewer>

显示结果:

Image控件的简单使用示例1的更多相关文章

  1. WebBrowser控件的简单应用2

    原文:WebBrowser控件的简单应用2 第一个简单应用里面讲述的是如何模拟调用当前网页的元素的事件或者赋值/取值.这次的应用讲述的是1:如何处理弹出新页面的事件(总是在我的浏览器里面现实新页面)2 ...

  2. vs2005中的WebBrowser控件的简单应用

    原文:vs2005中的WebBrowser控件的简单应用 这个控件被封装了一下,和以前的调用方式稍有不同.事件还是那几个,变化不大.方法变了不少.从网上能查到的资料不多,贴出一些代码来作参考.看看这段 ...

  3. 安卓Design包之TabLayout控件的简单使用

    Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个supp ...

  4. IOS自定义日历控件的简单实现(附思想及过程)

    因为程序要求要插入一个日历控件,该空间的要求是从当天开始及以后的六个月内的日历,上网查资料基本上都说只要获取两个条件(当月第一天周几和本月一共有多少天)就可以实现一个简单的日历,剩下的靠自己的简单逻辑 ...

  5. Android PullToRefresh下拉刷新控件的简单使用

    PullToRefresh这个开源库早就听说了,不过一直没用过.作为一个经典的的开源库,我觉得还是有必要认识一下. 打开github上的网址:https://github.com/chrisbanes ...

  6. js jsp 时间 日期 控件 插件 简单 实用

    js时间控件一般都是找网上的用,这东西平常很少涉及到,一用到找起来却烦死人,不是没用就是太复杂,今天向大家推荐一个简单实用的控件,该控件在不断更新,而且有专门的网站对它进行维护,所以值得一看. 先说它 ...

  7. iOS 搜索框控件 最简单的dome

    刚学习搜索框控件,写了个最简单的dome #import <UIKit/UIKit.h> .h @interface ViewController : UIViewController&l ...

  8. wxPython中按钮、文本控件的简单运用

    本节学习图形用户界面 ------------------------ 本节介绍如何创建python程序的图形用户界面(GUI),也就是那些带有按钮和文本框的窗口.这里介绍wxPython : 下载地 ...

  9. SkylineGlobe TerraExplorer Pro 7.0 Web 控件版 第一行示例代码

    SkylineGlobe TerraExplorer Pro 7.0 是原生的64位应用程序,在Web端用插件方式开发的第一行示例代码如下: 常规代码,需要IE64位: <!DOCTYPE ht ...

随机推荐

  1. linux 防火墙--firewalld学习

    firewalld是centos7默认的防火墙,相比于iptables重要的优势: 1 支持动态更新: 2 不用重启服务: 同时增加了防火墙的“zone”概念,具体差异没做过多了解,这篇文章只记录fi ...

  2. if exists用法

    1 判断数据库是否存在Sql代码 if exists (select * from sys.databases where name = ’数据库名’)    drop database [数据库名] ...

  3. 1105ecos笔记

    1 dbschema <?php$db['item']=array ( 'columns' => array ( 'item_id' => array ( 'type' => ...

  4. C程序设计语言练习题1-14

    练习1-14 编写一个程序,打印输入中各个字符出现频度的直方图. 代码如下: #include <stdio.h> // 包含标准库的信息. int main() // 定义名为main的 ...

  5. 热门usb无线网卡

    拓实 N910 N95 N82 N81 N89 都是3070的 拓实 N87 G618 是8187的硬功夫 216 310 217 218 300 315 335 350 370 380 510 53 ...

  6. 『局域网安全』利用ARP欺骗劫持Cookie

    0x 00 ARP欺骗说明 欺骗原理相关内容就不多叙述了,百度一大堆 实施ARP欺骗在Windows下,Linux下都相关工具 由于在Linux下可以开启ip_forward功能,个人认为Linux下 ...

  7. QT程序制作deb包并安装在应用程序菜单

    制作原理:打包:将QT制作的源程序(没有编译的)用debian压缩打包(这里是用脚本对源程序再编译)安装:将deb包中的源程序解压(默认解压到根目录)到规定系统文件中并编译(postinst脚本)卸载 ...

  8. Web Server (IIS) Administration Cmdlets in Windows PowerShell

    https://technet.microsoft.com/en-us/library/ee790599.aspx Web Server (IIS) Administration Cmdlets in ...

  9. fatal error C1083: Cannot open include file: 'qttreepropertybrowser.moc': No such file or directory

    编译QtPropertyBrowser的时候出错.要用moc来生成.moc文件.我好奇的是与之前的通过.h生成moc_xxx.cpp不一样. 要用以下命令.一般来说是处理带Q_OBJECT宏的.h文件 ...

  10. bzoj2821作诗

    http://www.lydsy.com/JudgeOnline/problem.php?id=2821 分块 我们把数列分成$\sqrt{N}$块 记$f[i][j]$表示第i块到第j块的答案,这个 ...