public bool EqualsTo(MaikazeImage img) { if (this.w == img.w && this.h == img.h) return true; return false; }
public void MergeImage(MaikazeImage mergeBmp, int merge_x, int merge_y) { int ori_bpp = bitDepth / 8; int ref_bpp = mergeBmp.bitDepth / 8; int start_x = merge_x; int start_y = merge_y; if (merge_x < 0) start_x = 0; if (merge_y < 0) start_y = 0; for (int i = start_y; i < mergeBmp.h + start_y; i++) for (int j = start_x; j < mergeBmp.w + start_x; j++) { if (ref_bpp == 4 && mergeBmp.px[((i - start_y) * mergeBmp.w + j - start_x) * ref_bpp + 3] == 0) continue; px[(i * w + j) * ori_bpp + 0] = (byte)((mergeBmp.px[((i - start_y) * mergeBmp.w + j - start_x) * ref_bpp + 0] - px[(i * w + j) * ori_bpp + 0]) * mergeBmp.GetAlpha() / 255 + px[(i * h + j) * ori_bpp + 0]); px[(i * w + j) * ori_bpp + 1] = (byte)((mergeBmp.px[((i - start_y) * mergeBmp.w + j - start_x) * ref_bpp + 1] - px[(i * w + j) * ori_bpp + 1]) * mergeBmp.GetAlpha() / 255 + px[(i * h + j) * ori_bpp + 1]); px[(i * w + j) * ori_bpp + 2] = (byte)((mergeBmp.px[((i - start_y) * mergeBmp.w + j - start_x) * ref_bpp + 2] - px[(i * w + j) * ori_bpp + 2]) * mergeBmp.GetAlpha() / 255 + px[(i * h + j) * ori_bpp + 2]); } RefreshImageFromPixels(); }