1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74:
| BitmapData Bild1Data = Bild1.LockBits(new Rectangle(0, 0, Bild1.Width, Bild1.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); int Bild1Stride = Bild1Data.Stride; System.IntPtr Bild1Scan0 = Bild1Data.Scan0;
BitmapData Bild2Data = Bild2.LockBits(new Rectangle(0, 0, Bild2.Width, Bild2.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); int Bild2Stride = Bild2Data.Stride; System.IntPtr Bild2Scan0 = Bild2Data.Scan0;
BitmapData NeuesBildData = NeuesBild.LockBits(new Rectangle(0, 0, NeuesBild.Width, NeuesBild.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb); int NeuesBildStride = NeuesBildData.Stride; System.IntPtr NeuesBildScan0 = NeuesBildData.Scan0;
unsafe { byte* Bild1p = (byte*)(void*)Bild1Scan0; int Bild1nOffset = Bild1Stride - Bild1.Width * 3; byte* Bild2p = (byte*)(void*)Bild2Scan0; int Bild2nOffset = Bild2Stride - Bild2.Width * 3; byte* NeuesBildp = (byte*)(void*)NeuesBildScan0; int NeuesBildnOffset = NeuesBildStride - NeuesBild.Width * 3;
bool Bild1Zaehlen = true; bool Bild2Zaehlen = false;
for (int y = 0; y < NeuesBild.Height; y++) { for (int x = 0; x < NeuesBild.Width; x++) { if ((y < Bild1.Height) && (x < Bild1.Width)) { Bild1Zaehlen = true; Bild2Zaehlen = false; NeuesBildp[0] = Bild1p[0]; NeuesBildp[1] = Bild1p[1]; NeuesBildp[2] = Bild1p[2]; } else if ((y >= Bild1.Height) && (x < Bild2.Width)) { Bild1Zaehlen = false; Bild2Zaehlen = true; NeuesBildp[0] = Bild2p[0]; NeuesBildp[1] = Bild2p[1]; NeuesBildp[2] = Bild2p[2]; } else { Bild1Zaehlen = false; Bild2Zaehlen = false; NeuesBildp[0] = 255; NeuesBildp[1] = 255; NeuesBildp[2] = 255; }
if (Bild1Zaehlen) Bild1p += 3; if (Bild2Zaehlen) Bild2p += 3; NeuesBildp += 3; }
if (Bild1Zaehlen) Bild1p += Bild1nOffset; if (Bild2Zaehlen) Bild2p += Bild2nOffset; NeuesBildp += NeuesBildnOffset; }
Bild1.UnlockBits(Bild1Data); Bild2.UnlockBits(Bild2Data); NeuesBild.UnlockBits(NeuesBildData);
} |