導讀Adobe Photoshop,簡稱“PS”,是由Adobe Systems開發和發行的圖像處理軟件。Photoshop主要處理以像素所構成的數字圖像。使用其眾多的編修與繪圖工具,可以有效地進行圖片... Adobe Photoshop,簡稱“PS”,是由Adobe Systems開發和發行的圖像處理軟件。Photoshop主要處理以像素所構成的數字圖像。使用其眾多的編修與繪圖工具,可以有效地進行圖片編輯工作。ps有很多功能,在圖像、圖形、文字、視頻、出版等各方面都有涉及。 Photoshop中比較常用的一個功能就是曲線調整,如圖通過鼠標添加、刪除、拖動曲線節點,這樣即可調整圖像參數。這個功能就其思路來說(這里只考慮曲線本身,數據存儲等不在此列),是比較簡單的:
完成后的程序操作演示(動畫): 下面是部分示例代碼: 節點: List<Point> points; 繪制節點手柄: Rectangle getHandle(Point p) { Rectangle rect = new Rectangle( p.X - 3, p.Y - 3, 6, 6); return rect; } 判斷某點是否位于手柄區域: bool isHandle(Point p) { foreach (Point pt in points) { if (isInside(p, getHandle(pt))) { downIndex = points.IndexOf(pt); downPoint = pt; current = pt; return true; } } return false; } 注意這個部分可以適當放大一下判斷區域,這樣便于鼠標操作(手柄太小,不易點擊)。 繪制手柄: void drawHandle(Graphics g, Point p) { if (points.IndexOf(p) == downIndex) g.FillRectangle( Brushes.Black, getHandle(p)); else g.DrawRectangle( Pens.Black, getHandle(p)); } 繪制曲線: void drawCurve(Graphics g) { g.DrawCurve(Pens.Black, points.ToArray()); } 曲線繪制采用了Graphics類的基數樣條繪制方法,默認張力0.5。 繪制十字定位線(輔助功能): void drawCrosshair(Graphics g, Point p) { g.DrawLine( Pens.Gray, 0, p.Y, clientRect.Width, p.Y); g.DrawLine( Pens.Gray, p.X, 0, p.X, clientRect.Height); } 鼠標拖動: protected override void OnMouseMove(MouseEventArgs e) { mousePoint = e.Location; if (mouseDown) { if (Current != null) { Current = mousePoint; } Refresh(); } } 更多帶節點曲線,鼠標可拖動節點調整曲線,類似Photoshop相關文章請關注PHP中文網! Photoshop默認保存的文件格式,可以保留所有有圖層、色版、通道、蒙版、路徑、未柵格化文字以及圖層樣式等。 |
溫馨提示:喜歡本站的話,請收藏一下本站!