Từ 1 tới 3 trên tổng số 3 kết quả

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

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    2

    Mặc định 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

    Visual C# Code:
    1. public static void ApplyTexture (Image img, Image texture,
    2.     float textureTransparency)
    3. {
    4.     if ( (img ==null) || (texture==null) )
    5.         throw new ArgumentNullException();
    6.     if (textureTransparency < 0 || textureTransparency > 1)
    7.         throw new ArgumentOutOfRangeException(
    8.               "Gia tri tu 0 den 1.");
    9.  
    10.     // Chuyen anh qua mau gray truoc
    11.     MakeImageGrayscale (texture);
    12.  
    13.  
    14.     Bitmap txtr = new Bitmap(texture);
    15.     BitmapData bmData = txtr.LockBits(new Rectangle(0, 0,
    16.                  txtr.Width, txtr.Height),
    17.         ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
    18.     int stride = bmData.Stride;
    19.     System.IntPtr Scan0 = bmData.Scan0;
    20.    
    21.     unsafe
    22.     {
    23.         byte * p = (byte *)(void *)Scan0;
    24.         int nOffset = stride - txtr.Width*4;
    25.  
    26.  
    27.         for (int y=0; y < txtr.Height; ++y)
    28.         {
    29.             for (int x=0; x < txtr.Width; ++x)
    30.             {
    31.                 p[3] = (byte)(p[0] * textureTransparency);
    32.                 p += 4; // Move to the next pixel
    33.             }
    34.             p += nOffset;
    35.         }
    36.     }
    37.     txtr.UnlockBits(bmData);
    38.  
    39.     Graphics gr = Graphics.FromImage(img);
    40.     TextureBrush myBrush = new TextureBrush(txtr);
    41.     gr.FillRectangle (myBrush,0,0,img.Width, img.Height);
    42.     myBrush.Dispose();
    43.     gr.Dispose();
    44.     txtr.Dispose();
    45. }
    46.  
    47.  
    48.  
    49. // Chuyen mot anh thanh mau xam
    50. public static void MakeImageGrayscale (Image img)
    51. {
    52.     ColorMatrix cMatrix = new ColorMatrix (
    53.        new float[][]  {
    54.          new float[] {0.299F, 0.299F, 0.299F, 0, 0},
    55.          new float[] {0.587F, 0.587F, 0.587F, 0, 0},
    56.          new float[] {0.114F, 0.114F, 0.114F, 0, 0},
    57.          new float[] {0, 0, 0, 1, 0},
    58.          new float[] {0,  0,  0,  1, 0}});
    59.  
    60.     ImageAttributes imageAttrib = new ImageAttributes();
    61.     imageAttrib.SetColorMatrix(cMatrix);
    62.  
    63.     Graphics gr = Graphics.FromImage (img);
    64.    
    65.     gr.DrawImage (img, new Rectangle(0, 0, img.Width, img.Height),
    66.                     0, 0, img.Width, img.Height, GraphicsUnit.Pixel,
    67.                     imageAttrib);
    68.     gr.Dispose();
    69. }
    70.  
    71. [B][COLOR="Red"]// st codeproject.com[/COLOR][/B]

    Đề nghị bạn bỏ code vào thẻ [c o d e]. nhc1987.
    Đã được chỉnh sửa lần cuối bởi nhc1987 : 15-12-2007 lúc 08:44 PM.
    Không học = Thi hỏng;
    Học = Thi không hỏng;
    Cộng hai vế ta được:
    Không học + học = Thi hỏng + thi không hỏng
    Đặt "học", "Thi hỏng" làm nhân tử chung, đơn giản 2 vế ta được:
    HỌC = THI HỎNG;
    => Học = Không học;
    => KHỎI HỌC;

  2. #2
    Ngày gia nhập
    08 2008
    Bài viết
    8

    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 gia nhập
    09 2011
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi TuanNghia Xem bài viết
    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

Các đề tài tương tự

  1. Lập trình C++ bit shifting? kết quả binary y hệt nhau nhưng cout lại khác nhau
    Gửi bởi quano1 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 10-05-2016, 10:28 AM
  2. Xem giúp mình 2 vòng lặp giống nhau nhưng kết quả khác nhau
    Gửi bởi anhkhoadn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 06-11-2013, 12:57 AM
  3. Lập trình C++ khác nhau trong việc khái báo!
    Gửi bởi ngngocnhung94 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 08-06-2013, 10:59 PM
  4. Database Hai câu truy vấn giống nhau(logic) mà kết quả lại khác nhau??
    Gửi bởi kqphu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 15-10-2011, 11:50 AM
  5. Làm thế nào để xóa một số trùng nhau trong một dãy số trong C++?
    Gửi bởi longkungfu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 02-03-2011, 10:28 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn