前辈指点:WPF桌面应用如何实现同一窗口下的界面切换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前辈指点:WPF桌面应用如何实现同一窗口下的界面切换相关的知识,希望对你有一定的参考价值。
1、canver 隐藏切换。不需要进行数据传递。2、使用frame+page 进行功能切换。对页面功能可独立编辑。 参考技术A 用contentControl,每次换掉contentControl的view。或者用frame控件。
WPF图片部分显示问题!求高人指点!
我欲用WPF做一个扑克牌游戏就是Windows自带的Solitaire游戏的UI界面,需要用到所有扑克牌的图片,Windows库里有一张集所有扑克在一起的一张图片,怎么实现显示上面特定的图片在特定的地点,求高人指点!
就是比如说,你有一张大的图片中,可以剪切为10×10=100张图片(就是照身份证照片时候有很多张头像打印在一张纸上),想取任意一张显示在一个地方,怎么取? 而且要随窗口变化大小也不会改变显示的图片内容,但是大小可以改也可不改。
我想把图片依旧保存在那一张图片上,一次性的写入内存,再在内存中调用图片的部分,这样比较节省资源,这个能实现吗?能给出实例代码吗? 那个XAML里应该怎么写?
追答我说的方式就是那种的。给你写了个例子:
public static class ImageService
///
/// 切割一张指定的图片
///
/// 指定的图片源
/// 图块宽度
/// 图块高度
/// 切割好的图片数组(从左往右,从上往下)
public static ImageSource[] SplitImage(BitmapSource source, int tileWidth, int tileHeight)
// 本来对参数有校验代码,结果字数超限了
var colCount = source.PixelWidth / tileWidth;
var rowCount = source.PixelHeight / tileHeight;
var results = new ImageSource[rowCount * colCount];
var stride = tileWidth * ((source.Format.BitsPerPixel + 7) / 8);
var pixelsCount = tileWidth * tileHeight;
var tileRect = new Int32Rect(0, 0, tileWidth, tileHeight);
for (int row = 0; row < rowCount; row++)
for (int col = 0; col < colCount; col++)
var pixels = new int[pixelsCount];
var copyRect = new Int32Rect(col * tileWidth, row * tileHeight, tileWidth, tileHeight);
source.CopyPixels(copyRect, pixels, stride, 0);
var wb = new WriteableBitmap(
tileWidth,
tileHeight,
source.DpiX,
source.DpiY,
source.Format,
source.Palette);
wb.Lock();
wb.WritePixels(tileRect, pixels, stride, 0);
wb.Unlock();
results[row * colCount + col] = wb;
return results;
我对这个图像处理的代码 真的看不懂,你能一步步的标注,然后发到我的邮箱吗? 谢谢了。。。543690817@qq.com 谢谢了
追答已发邮件 :)
以上是关于前辈指点:WPF桌面应用如何实现同一窗口下的界面切换的主要内容,如果未能解决你的问题,请参考以下文章