当前位置: 首页 > 编程日记 > 正文

百叶窗显示图片


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace Image
{
 /// <summary>
 /// Form1 的摘要说明。
 /// </summary>
 public class Form1 : System.Windows.Forms.Form
 {
  private System.Windows.Forms.Button button1;
  private System.Windows.Forms.OpenFileDialog openFileDialog1;
  private System.Drawing.Bitmap MyBitmap;
  private System.Windows.Forms.PictureBox pictureBox1;
  private System.Windows.Forms.Button button2;
  private System.Windows.Forms.Button button3;
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.Container components = null;

public Form1()
  {
   //
   // Windows 窗体设计器支持所必需的
   //
   InitializeComponent();

//
   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
   //
  }

/// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if (components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }

#region Windows 窗体设计器生成的代码
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
   this.button1 = new System.Windows.Forms.Button();
   this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
   this.pictureBox1 = new System.Windows.Forms.PictureBox();
   this.button2 = new System.Windows.Forms.Button();
   this.button3 = new System.Windows.Forms.Button();
   this.SuspendLayout();
   //
   // button1
   //
   this.button1.Location = new System.Drawing.Point(8, 168);
   this.button1.Name = "button1";
   this.button1.Size = new System.Drawing.Size(72, 23);
   this.button1.TabIndex = 1;
   this.button1.Text = "浏览图像";
   this.button1.Click += new System.EventHandler(this.button1_Click);
   //
   // openFileDialog1
   //
   this.openFileDialog1.Filter = "Image files (JPeg, Gif, Bmp, etc.)|*.jpg;*.jpeg;*.gif;*.bmp;*.tif; *.tiff; *.png|" +
    " JPeg files (*.jpg;*.jpeg)|*.jpg;*.jpeg |GIF files (*.gif)|*.gif |BMP files (*.b" +
    "mp)|*.bmp|Tiff files (*.tif;*.tiff)|*.tif;*.tiff|Png files (*.png)| *.png |All f" +
    "iles (*.*)|*.*";
   //
   // pictureBox1
   //
   this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
   this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
   this.pictureBox1.Location = new System.Drawing.Point(8, 8);
   this.pictureBox1.Name = "pictureBox1";
   this.pictureBox1.Size = new System.Drawing.Size(296, 152);
   this.pictureBox1.TabIndex = 3;
   this.pictureBox1.TabStop = false;
   //
   // button2
   //
   this.button2.Location = new System.Drawing.Point(80, 168);
   this.button2.Name = "button2";
   this.button2.Size = new System.Drawing.Size(104, 23);
   this.button2.TabIndex = 4;
   this.button2.Text = "水平百叶窗显示";
   this.button2.Click += new System.EventHandler(this.button2_Click);
   //
   // button3
   //
   this.button3.Location = new System.Drawing.Point(192, 168);
   this.button3.Name = "button3";
   this.button3.Size = new System.Drawing.Size(112, 23);
   this.button3.TabIndex = 5;
   this.button3.Text = "垂直百叶窗显示";
   this.button3.Click += new System.EventHandler(this.button3_Click);
   //
   // Form1
   //
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
   this.ClientSize = new System.Drawing.Size(312, 198);
   this.Controls.Add(this.button3);
   this.Controls.Add(this.button2);
   this.Controls.Add(this.pictureBox1);
   this.Controls.Add(this.button1);
   this.MaximizeBox = false;
   this.Name = "Form1";
   this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
   this.Text = "演示图像百叶窗显示";
   this.ResumeLayout(false);

}
  #endregion

/// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
   Application.Run(new Form1());
  }

private void button1_Click(object sender, System.EventArgs e)
  {//浏览图像文件
   this.openFileDialog1.ShowDialog();
   if(this.openFileDialog1.FileName.Trim()=="")
    return;
   try
   {   //得到原始大小的图像
    Bitmap SrcBitmap=new Bitmap(this.openFileDialog1.FileName);
    //得到缩放后的图像
    MyBitmap=new Bitmap(SrcBitmap,this.pictureBox1.Width,
     this.pictureBox1.Height);
    this.pictureBox1.Image=MyBitmap;
   }
   catch(Exception Err)
   {
    MessageBox.Show(this,"打开图像文件错误!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
   }
  }

private void button2_Click(object sender, System.EventArgs e)
  {//水平百叶窗显示图像
   MyBitmap=(Bitmap)this.pictureBox1.Image.Clone();
   int dh=MyBitmap.Height/20;
   int dw=MyBitmap.Width;
   Graphics g=this.pictureBox1.CreateGraphics();
   g.Clear(Color.Gray);   
   Point []MyPoint=new Point[20];
   for(int y=0;y<20;y++)
   {
    MyPoint[y].X=0;
    MyPoint[y].Y=y*dh;
   }
   Bitmap bitmap=new Bitmap(MyBitmap.Width,MyBitmap.Height);
   for(int i=0;i<dh;i++)
   {
    for(int j=0;j<20;j++)
    {
     for(int k=0;k<dw;k++)
     {
      bitmap.SetPixel(MyPoint[j].X+k,MyPoint[j].Y+i,MyBitmap.GetPixel(MyPoint[j].X+k,MyPoint[j].Y+i));
     }
    }
    this.pictureBox1.Refresh();
    this.pictureBox1.Image=bitmap;   
    System.Threading.Thread.Sleep(100);
   }   
  }

private void button3_Click(object sender, System.EventArgs e)
  {//垂直百叶窗显示图像
   MyBitmap=(Bitmap)this.pictureBox1.Image.Clone();
   int dw=MyBitmap.Width/30;
   int dh=MyBitmap.Height;
   Graphics g=this.pictureBox1.CreateGraphics();
   g.Clear(Color.Gray);   
   Point []MyPoint=new Point[30];
   for(int x=0;x<30;x++)
   {
    MyPoint[x].Y=0;
    MyPoint[x].X=x*dw;
   }
   Bitmap bitmap=new Bitmap(MyBitmap.Width,MyBitmap.Height);
   for(int i=0;i<dw;i++)
   {
    for(int j=0;j<30;j++)
    {
     for(int k=0;k<dh;k++)
     {
      bitmap.SetPixel(MyPoint[j].X+i,MyPoint[j].Y+k,MyBitmap.GetPixel(MyPoint[j].X+i,MyPoint[j].Y+k));
     }
    }
    this.pictureBox1.Refresh();
    this.pictureBox1.Image=bitmap;   
    System.Threading.Thread.Sleep(100);
   }   
  }
 }
}

转载于:https://www.cnblogs.com/Hotsource/archive/2006/09/18/hotsource.html

相关文章:

python安装pillow模块错误

安装的一些简单步骤就不介绍了&#xff0c;可以去搜索一下&#xff0c;主要就记录下我在安装pillow这一模块遇到的问题 1&#xff1a;安装好pillow后&#xff0c;安装过程没有出错 2&#xff1a;但是在python的IDLE输入from PIL import Image出错 原因&#xff1a;pillow版本与…

利用Use Case为系统行为建模(2)

本节主要介绍Use Case Diagram部分&#xff0c;其中包括Actor以及Actor之间的关系、Use Case以及Use Case之间的关系、Actor与Use Case之间的关系。这是利用Use Case Model捕获系统行为最核心的部分。明天还有一节&#xff0c;有关于软件需求部分就全部介绍完了。

启示录:打造用户喜爱的产品【PDF清晰版】,产品经理必看书籍之一

启示录&#xff1a;打造用户喜爱的产品是一本很值得一买的启蒙书&#xff0c;在书的扉页中写着&#xff0c;“好产品具备三个基本条件&#xff1a;价值、可用性、可行性&#xff0c;三者缺一不可。产品没有价值&#xff0c;开发团队再优秀也无济于事。” 书本主要是分成了三部…

eclipse 中断言使用的设定

JAVA是从JDK1.4才开始支持断言的&#xff08;添加了关键字assert&#xff09; 选择菜单"Windows"->"Perferences"&#xff0c;在对话框中找到"Java"->"Complier"->"Compliance and Classfiles"&#xff0c;把"…

利用Use Case为系统行为建模(3)

到这篇文章为止&#xff0c;需求部分就全部介绍完了。我们回顾一下&#xff0c;需求是RUP静态结构的一个工作流&#xff0c;Rational通过需求金字塔模型来理解需求过程&#xff0c;在需求部分我们要得到用例图、用例描述、补充规约和术语表等制品。这部分我们需要理解参与者与参…

freemarker取值

获取java Map集合的值&#xff1a;${map["key"]}

flutter离线源码安装包最新版本下载地址

Flutter 是在2018 世界移动大会上发布了第一个 Beta 版本&#xff0c;Flutter 用以帮助开发者在 Android 和 iOS 两个平台&#xff0c;同时开发高质量原生应用的全新移动 UI 框架。本文提供下最新版的下载地址。 flutter1.5.8windows安装包下载地址&#xff1a;http://t.cn/EoY…

MongoDB 搭建副本集

副本集&#xff08;Replica Set&#xff09;是一组MongoDB实例组成的集群&#xff0c;由一个主&#xff08;Primary&#xff09;服务器和多个备份&#xff08;Secondary&#xff09;服务器构成。通过Replication&#xff0c;将数据的更新由Primary推送到其他实例上&#xff0c;…

dfasdfasdfas

fasdfasfasdfafd转载于:https://www.cnblogs.com/lulei/archive/2006/10/17/531694.html

原型模式(Prototype)

克隆方法是我们经常使用的一种软件开发技巧&#xff0c;记得当年给经管系做沙盘ERP时&#xff0c;需要保存每年资产负债表的数据&#xff0c;当时对这种模式不熟悉&#xff0c;导致后期的数据变化使前期数据被动改变&#xff0c;现在想想&#xff0c;还是当时学艺不精&#xff…

Piccure Plus 3.1中文汉化版,Piccure Plus 3.1破解版,模糊照片变清晰神器,让你不再害怕手抖了

目前随着手机的普及化&#xff0c;大家随时随地都可以拍照&#xff0c;但是每个人拍照的水平各不相同&#xff0c;这种时候一款能把模糊的照片变清晰&#xff0c;把模糊的图片变清晰的软件就成了比不可少的东西了。 Piccure Plus 3.1中文汉化版。Piccure是一款非常强大的照片去…

java设置缓存机制

2019独角兽企业重金招聘Python工程师标准>>> java设置缓存机制 所谓缓存&#xff0c;就是将程序或系统经常要调用的对象存在内存中&#xff0c;一遍其使用时可以快速调用&#xff0c;不必再去创建新的重复的实例。这样做可以减少系统开销&#xff0c;提高系统效率。…

Analysis and Design Overview

前面图文我们介绍了“软件工程的六个最佳实践”以及“利用Use Case为系统行为建模”&#xff0c;本次我们介绍“系统分析与设计的初步”。

你是如何快捷、高效获取新知识的?

一次&#xff0c;同学问我“Redhat平台下的服务器叫什么&#xff1f;”&#xff0c;答案无疑是“Apach”。后来&#xff0c;我想他怎么不会在 Baidu 里搜索一下答案就出来籽&#xff1f;但这可以理解&#xff0c;他不是学计算机&#xff0c;对于这样获取知识的方式他不知道是可…

微软推出Windows XP/Server 2003紧急安全补丁:修复远程桌面CVE-2019-0708漏洞

根据CVE-2019-0708“攻击者可通过RDP向目标系统远程桌面服务发送特制请求”来远程执行系统上的代码。因为不需要用户干预&#xff0c;攻击可像野火一样从计算机传播到另一台计算机&#xff0c;从而导致整个系统受到攻击。 漏洞补丁&#xff1a;Windows XP补丁下载地址 漏洞补…

es5 编写类风格的代码

分享下《JavaScript忍者秘籍》中的一种编写类风格代码的方法 JavaScript可以让我们通过原型实现继承&#xff0c;许多开发人员&#xff0c;尤其是那些有传统面向对象背景的开发人员&#xff0c;都希望将JavaScript的继承系统简化并抽象成一个他们更熟悉的系统。所以&#xff0c…

与15级新加入团队同学的约定

坚持&#xff01;坚持&#xff01;坚持&#xff01;

【冷门实用小工具】轻量级流程图工具ClickCharts PRO绿色版,ClickCharts PRO下载【亲测有效】

下载地址&#xff1a;ClickCharts Pro注册版下载地址 轻量级流程图工具ClickCharts Pro注册版本&#xff0c;大小总共900多K&#xff0c;功能跟visio一样强大。 一、实用功能&#xff1a; 1.创建图表模板 2.可以选择各种符号和线连接风格 3.创建UML(统一建模语言)标准的可视化…

深入讨论.NET Socket的Accept方法

深入讨论.NET Socket的Accept方法 考虑一个问题&#xff0c;假如同时有50个连接请求进入一个服务器&#xff08;这种情况对于普通负载的Web服务器都是很常见的&#xff09;会怎么样&#xff1f;阻塞式I/O只能循环调用Accept&#xff0c;一个一个对50个连接进行Accept操作&…

php代码中使用换行及(\n或\r\n和br)的应用

浏览器识别不了\n或\r\n&#xff0c;这两个换行符是文本换行符&#xff0c;文本文件有效;假设须要将结果输出到浏览器或打印到显示器&#xff0c;代码中使用br;假设仅仅是在源码中换行。则使用\n或\r\n,感兴趣的朋友能够了解下&#xff0c;也许对你学习php有所帮助 <?php e…

前后端分离的探索(一)

文桥&#xff0c;13级机械系学生。在LSGO软件技术团队负责前端部分&#xff0c;大家或许会惊讶&#xff0c;怎么一个Coding高手&#xff0c;非计算机或数学出身。让我告诉你一个秘密&#xff1a;如果你花时间去追踪技术圈内绝大多数的大牛、大神的背景&#xff0c;甚至跟他们聊…

【冷门实用小工具】JAVA和C#轻量级的UML图绘制工具NClass,UML类图编辑器免安装版【亲测有效】

下载地址&#xff1a;NClass下载地址 NClass是一款免费的UML图绘制工具&#xff0c;它很小巧轻量级&#xff0c;解压之后大小不到2M&#xff0c;便于携带和使用&#xff0c;是很实用UML绘制工具。 功能介绍&#xff1a; 1、支持完整的C&#xff03;和Java支持多语言的特定元素…

C#读取XML点滴

今天遇到了一个xml属性值读取的问题&#xff0c;我先是从代码的思路、语法查找问题&#xff0c;都没有发现错误&#xff0c; 接着我又从客户端和服务器端应答的信息找问题&#xff0c;原来问题出在我取的xml属性值没有出现在这个xml字符串里&#xff08;此处所说的xml字符串是根…

Bash之break、continue和return命令在循环中的作用

1 continue&#xff1a;直接跳过本次循环&#xff0c;进入下一次循环。#!/bin/basha10b15while [ $a -le $b ]do((a))if [ $a -eq 11 ] || [ $a -eq 13 ]thencontinuefiecho $adone[rootmaster ~]# ./a.sh121415162 break&#xff1a;此命令将会跳出循环#!/bin/basha8b15while …

分析与设计(AD)简介(1)

这一节主要介绍在RUP的分析与设计阶段所涉及的&#xff1a;Role、Activity、Workflow、Artifact。

混淆梯度(Obfuscated Gradients Give a False Sense of Security Circumventing Defense)

下载地址&#xff1a;https://u20150046.ctfile.com/fs/20150046-376633529 论文摘要 我们发现“混淆梯度”&#xff08;obfuscated gradients&#xff09;作为一种梯度掩码&#xff08;gradient masking&#xff09;&#xff0c;会在防御对抗样本中导致一种错误的安全感。虽然…

在jsp中点击按钮,在bean中把已经查出的数据,生成csv文件,然后在ie中自动打开

Quote:这个问题可以分两部分讨论&#xff1a; 1、csv文件的格式 2、通过jsp向客户端输出csv文件 第一个问题我们就按简单的来讨论&#xff0c;可以认为是每个字段用""包含后再用,号分割 比如&#xff1a; "a","b","c" "d&q…

分析与设计(AD)简介(2)

这一节主要介绍OOAD分析与设计中涉及的几个重要概念&#xff0c;包括&#xff1a;分析、设计、体系结构、41视图、Use Case实现等。

1.3 Quick Start中 Step 7: Use Kafka Connect to import/export data官网剖析(博主推荐)

不多说&#xff0c;直接上干货&#xff01; 一切来源于官网 http://kafka.apache.org/documentation/ Step 7: Use Kafka Connect to import/export data Step 7: 使用 Kafka Connect 来 导入/导出 数据 Writing data from the console and writing it back to the console is …

ELMo:最好用的词向量(Deep contextualized word representations)论文 pdf

下载地址&#xff1a;https://u20150046.ctfile.com/fs/20150046-376633397 作者&#xff1a;Matthew E. Peters, Mark Neumann, Mohit Iyyer, Matt Gardner, Christopher Clark, Kenton Lee, Luke Zettlemoyer 论文摘要 我们提出一种新的深层语境化的词表示形式&#xff0c…