当前位置: 首页 > news >正文

Win8Metro(C#)数字图像处理--2.18图像平移变换

原文: Win8Metro(C#)数字图像处理--2.18图像平移变换



[函数名称]

图像平移变换函数TranslationProcess(WriteableBitmap src,int x,int y)

[函数代码]

       ///<summary>

       /// Translation process.

       ///</summary>

       ///<param name="src">Source image.</param>

       ///<param name="x">Translate value of x.</param>

       ///<param name="y">Translate value of y.</param>

       ///<returns></returns>

       publicstaticWriteableBitmap TranslationProcess(WriteableBitmap src,int x,int y)18平移变换

       {

           if(src!=null )

           {

           int w = src.PixelWidth;

           int h = src.PixelHeight;

           WriteableBitmap translateImage =newWriteableBitmap(w, h);

           byte[] temp = src.PixelBuffer.ToArray();

           byte[] tempMask =newbyte[w * h * 4];

           for (int j = 0; j < h; j++)

           {

               for (int i = 0; i < w; i ++)

               {

                   if (i + x < 0 || i + x >= w || j + y < 0 || j + y >= h)

                   {

                       tempMask[i * 4 + j * w * 4] = (byte)0;

                       tempMask[i * 4 + 1 + j * w * 4] = (byte)0;

                       tempMask[i * 4 + 2 + j * w * 4] = (byte)0;

                   }

                   else

                   {

                       tempMask[i * 4 + j * w * 4] = (byte)(temp[(i + x) * 4 + (j + y) * w * 4]);

                       tempMask[i * 4 + 1 + j * w * 4] = (byte)(temp[(i + x) * 4 + 1 + (j + y) * w * 4]);

                       tempMask[i * 4 + 2 + j * w * 4] = (byte)(temp[(i + x) * 4 + 2 + (j + y) * w * 4]);

                       tempMask[i * 4 + 3 + j * w * 4] = (byte)(temp[(i + x) * 4 + 3 + (j + y) * w * 4]);

                   }

               }

           }

           Stream sTemp = translateImage.PixelBuffer.AsStream();

           sTemp.Seek(0, SeekOrigin.Begin);

           sTemp.Write(tempMask, 0, w * 4 * h);

           return translateImage;

           }

           else

           {

               returnnull;

           }  

       }

[图像效果]

相关文章:

  • 银行卡号编码规则
  • iOS开发:瀑布流效果的实现(使用UICollectionView)
  • 666!中国企业凭人脸识别勇夺“金牌”
  • CentOS7.2安装配置nginx+flask+python+uwsgi运行环境
  • 快速理解Linux内核态与用户态
  • python3 写一个简单的websocket程序(转)
  • 自测之Lesson16:并发通信
  • 软工作业PSP与单元测试训练
  • ElasticSearch入门及核心概念介绍
  • 软件工程第二周阅读作业
  • 前台vue的使用简单小结
  • SSRF(服务端请求伪造)
  • ubuntu下unzip解压zip文件中文乱码问题
  • 菜鸟网络与顺丰达成和解 确保数据安全进行合作
  • Android系统启动流程 -- android
  • 时间复杂度分析经典问题——最大子序列和
  • 2017 前端面试准备 - 收藏集 - 掘金
  • gitlab-ci配置详解(一)
  • Java反射-动态类加载和重新加载
  • Java-详解HashMap
  • Object.assign方法不能实现深复制
  • Ruby 2.x 源代码分析:扩展 概述
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 闭包,sync使用细节
  • 近期前端发展计划
  • 聚类分析——Kmeans
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 学习笔记:对象,原型和继承(1)
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • ionic入门之数据绑定显示-1
  • ​业务双活的数据切换思路设计(下)
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #pragma multi_compile #pragma shader_feature
  • #QT(一种朴素的计算器实现方法)
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $$$$GB2312-80区位编码表$$$$
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (3)选择元素——(17)练习(Exercises)
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (转)C#调用WebService 基础
  • (转)IOS中获取各种文件的目录路径的方法
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core 版本不支持的问题
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Core 中的路径问题
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .Net各种迷惑命名解释
  • .NET框架设计—常被忽视的C#设计技巧
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .net通用权限框架B/S (三)--MODEL层(2)
  • [ NOI 2001 ] 食物链