Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Lồng 2 bức ảnh vào nhau trong lập trình C#

    Dùng phương thức ApplyTextture này để ***g 2 ảnh vào nhau. Ví dụ đặt trong sự kiên paint() của form.
    Phải using thằng System.Drawing.Imaging; trước


    Mã:
    public static void ApplyTexture (Image img, Image texture,     float textureTransparency){    if ( (img ==null) || (texture==null) )         throw new ArgumentNullException();    if (textureTransparency < 0 || textureTransparency > 1)         throw new ArgumentOutOfRangeException(              "Gia tri tu 0 den 1.");     // Chuyen anh qua mau gray truoc    MakeImageGrayscale (texture);      Bitmap txtr = new Bitmap(texture);    BitmapData bmData = txtr.LockBits(new Rectangle(0, 0,                  txtr.Width, txtr.Height),         ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);     int stride = bmData.Stride;     System.IntPtr Scan0 = bmData.Scan0;        unsafe    {        byte * p = (byte *)(void *)Scan0;        int nOffset = stride - txtr.Width*4;          for (int y=0; y < txtr.Height; ++y)        {            for (int x=0; x < txtr.Width; ++x)            {                p[3] = (byte)(p[0] * textureTransparency);                p += 4; // Move to the next pixel            }            p += nOffset;        }    }    txtr.UnlockBits(bmData);     Graphics gr = Graphics.FromImage(img);    TextureBrush myBrush = new TextureBrush(txtr);    gr.FillRectangle (myBrush,0,0,img.Width, img.Height);    myBrush.Dispose();    gr.Dispose();    txtr.Dispose();}   // Chuyen mot anh thanh mau xampublic static void MakeImageGrayscale (Image img){    ColorMatrix cMatrix = new ColorMatrix (        new float[][]  {          new float[] {0.299F, 0.299F, 0.299F, 0, 0},         new float[] {0.587F, 0.587F, 0.587F, 0, 0},         new float[] {0.114F, 0.114F, 0.114F, 0, 0},         new float[] {0, 0, 0, 1, 0},         new float[] {0,  0,  0,  1, 0}});     ImageAttributes imageAttrib = new ImageAttributes();    imageAttrib.SetColorMatrix(cMatrix);     Graphics gr = Graphics.FromImage (img);       gr.DrawImage (img, new Rectangle(0, 0, img.Width, img.Height),                     0, 0, img.Width, img.Height, GraphicsUnit.Pixel,                     imageAttrib);    gr.Dispose();} // st codeproject.com
    Đề nghị bạn bỏ code vào thẻ [c o d e]. nhc1987.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình cũng làm theo mà sao chờ thì lâu mà không thấy vẽ ảnh lên gì cả. Bạn có thể gửi cả chương trình lên cho bọn mình tham khảo được không?

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi TuanNghia
    Mình cũng làm theo mà sao chờ thì lâu mà không thấy vẽ ảnh lên gì cả. Bạn có thể gửi cả chương trình lên cho bọn mình tham khảo được không?
    Copy từ CodeProject.com mà cũng không dám cho cái link từ codeproject. Không biết đã test chưa nữa. Đang tìm link. Nếu có sẽ send cho bạn

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •