• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

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

Các thủ thuật về truyền thông đa phương tiện, đồ họa

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
onlysoft
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 330
Ngày tham gia: T.Tư 26/03/2008 6:32 pm
Đến từ: ONLYSOFT
Been thanked: 8 time

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

Gửi bàigửi bởi onlysoft » T.Tư 28/05/2008 8:22 am

Thủ thuật: Lập trình lồng 2 bức ảnh vào nhau
Tác giả: Sưu tầm
Mô tả: Lập trình lồng 2 bức ảnh vào nhau


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

Code:

Mã: Chọn hết

  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. }

Test thử xem sao nhé :))
Chưa test thử đâu :D


:x Tin học là cuộc sống, Lập trình là người yêu, Vợ là computer :x
Tôi yêu tin học, Tin học lập trình, Để lập trình tôi dùng VB, Tôi là B-)nly

Quay về “[.NET] Âm thanh và Đồ họa”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách