最近在搞一個圖形圖像的項目。不知道經理為什麼選擇了C#語言,但還是要做,呵呵。
在期間出現一個比較難解決的問題如下:
刪除當前圖層的指定區域用來顯示下面圖層在這個區域的圖像,相當於PS蒙版層的效果。
實現代碼如下:
Bitmap tmp = new Bitmap(page.ImageFileName); Bitmap image = new Bitmap(tmp.Width, tmp.Height); Graphics g = Graphics.FromImage(image); g.Clear(Color.Transparent); g.DrawImage(tmp, 0, 0, tmp.Width, tmp.Height); tmp.Dispose(); g = Graphics.FromImage(image); foreach (IVObject obj in page.Layers[1].VObjects) { Matrix m; GraphicsPath path = new GraphicsPath(); switch (obj.GetType().Name) { case "RectangleVObject": path.ClearMarkers(); path.AddRectangle(obj.GetVObjectBounds()); m = obj.Transform; m.Translate((m.OffsetX * 1.33F - m.OffsetX), (m.OffsetY * 1.33F - m.OffsetY), MatrixOrder.Append); m.Scale(1.33F, 1.33F); path.Transform(m); g.SetClip(path); g.Clear(Color.Transparent);
Bitmap sourceImage = new Bitmap(imageFileName);
Bitmap image = new Bitmap(sourceImage .Width, sourceImage .Height);
Graphics g = Graphics.FromImage(image);
g.Clear(Color.Transparent);
g.DrawImage(sourceImage , 0, 0, sourceImage .Width, sourceImage.Height);
sourceImage .Dispose();
GraphicsPath path = new GraphicsPath();
Rectangle r = new Rectangle(x,y,w,h);
path.AddRectangle(r);
g.SetClip(path);
g.Clear(Color.Transparent);