Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15621
  • 博文数量: 18
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2015-10-20 21:28
文章分类
文章存档

2015年(18)

我的朋友
最近访客

分类: C#/.net

2015-11-17 08:10:40

as示例:
  Object myObject = new Object(); //创建一个object对象

  ClassA a = myObject as ClassA; //将它转换为ClassA类型,此操作会失败,但不会抛异常,a会被设置为null

  a.ToString(); //访问a会抛出一个System.NullReferenceException异常

  as 的工作方式和强制类转换一样,但是它永远不会抛出一个异常,如果指定的操作不能正确地进行转换,那么得到的就是null,实际应用中通常会判断结果是否为 null;

实例化的时候父类向子类转换或者子类向父类强制转换的时候会用到,
用于执行可兼容类型之间的转换。
当转换失败时,as 运算符将产生空,而不引发异常。

C#中Graphics各种方法的用法详解

Graphics示例:
public partial class Form1 : Form
{
  Graphics g;
  Rectangle rect   
 
  public Form1()
  {
    InitializeComponent();
     g = this.CreateGraphics();
     rect = new Rectangle(5, 10, 30, 30);
  }
  private void Form1_Paint(object sender, PaintEventArgs e)
  {
      // 作图方法必须在Paint事件中处理!
      g.DrawRectangle(Pens.Red, rect);
  }
}

简化版                                                                            
public partial class Form1 : Form
{
  //Graphics g;
  Rectangle rect   
 
  public Form1()
  {
    InitializeComponent();
     //g = this.CreateGraphics();
     rect = new Rectangle(5, 10, 30, 30);
  }
  private void Form1_Paint(object sender, PaintEventArgs e)
  {
     //直接使用事件参数e中的Graphics作图
     e.Graphics.DrawRectangle(Pens.Red, rect);
  }
}

作图方法必须在Paint事件中处理。原因与Form的刷新有关:每当窗体被Windows系统刷新都会引发Paint事件。在Paint事件中,你必须重新绘制你要的图形,否则画出的图形在窗体被刷新后就消失了;如果你把绘制图形的方法放到别的地方(比如你放在Form的Load事件处理中),窗体被Windows刷新后,你画出的矩形就被刷没了。

private void button1_Click(object sender, EventArgs e)
        {
            Bitmap bp = new Bitmap("S1.BMP");      
            //在pictureBox1里绘画
            Graphics g = Graphics.FromHwnd(this.pictureBox1.Handle);
            RectangleF destRect = new RectangleF(20, 20, 100, 100);
            destRect.Width += 50;
            GraphicsUnit units = GraphicsUnit.Pixel;
            //从g对象(即pictureBox1)的(10,10)处开始绘制图bp的destRect区域
            g.DrawImage(bp, 10, 10, destRect, units); 
            //Graphics.DrawImage (Image, Int32, Int32, Rectangle, GraphicsUnit)
          //(要绘制的图bp(Image), 要绘制的开始位置Int32, Int32,(要绘制什么样的图(可选项)矩形),图形单元.像素(GraphicsUnit.Pixel)或单位(units))//    /*菜鸟个人理解注解翻译不能信为真
            //bp.Save("..jpg");
            //修改之后的图片保存
            Bitmap saveBitmap = new Bitmap(1280, 1024);
            g = Graphics.FromImage(saveBitmap);
            g.DrawImage(bp, 50, 50, destRect, units);
            saveBitmap.Save("E:\\bmp.bmp");
        }

//以上程序来源为网络,本只复制,为验证,,

阅读(388) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~