|
導(dǎo)讀Adobe Photoshop,簡稱“PS”,是由Adobe Systems開發(fā)和發(fā)行的圖像處理軟件。Photoshop主要處理以像素所構(gòu)成的數(shù)字圖像。使用其眾多的編修與繪圖工具,可以有效地進(jìn)行圖片... Adobe Photoshop,簡稱“PS”,是由Adobe Systems開發(fā)和發(fā)行的圖像處理軟件。Photoshop主要處理以像素所構(gòu)成的數(shù)字圖像。使用其眾多的編修與繪圖工具,可以有效地進(jìn)行圖片編輯工作。ps有很多功能,在圖像、圖形、文字、視頻、出版等各方面都有涉及。 Photoshop中比較常用的一個(gè)功能就是曲線調(diào)整,如圖
通過鼠標(biāo)添加、刪除、拖動(dòng)曲線節(jié)點(diǎn),這樣即可調(diào)整圖像參數(shù)。這個(gè)功能就其思路來說(這里只考慮曲線本身,數(shù)據(jù)存儲(chǔ)等不在此列),是比較簡單的:
完成后的程序操作演示(動(dòng)畫):
下面是部分示例代碼: 節(jié)點(diǎn): List<Point> points; 繪制節(jié)點(diǎn)手柄: Rectangle getHandle(Point p)
{
Rectangle rect = new Rectangle(
p.X - 3,
p.Y - 3,
6,
6);
return rect;
}判斷某點(diǎn)是否位于手柄區(qū)域: 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;
}注意這個(gè)部分可以適當(dāng)放大一下判斷區(qū)域,這樣便于鼠標(biāo)操作(手柄太小,不易點(diǎn)擊)。 繪制手柄: 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類的基數(shù)樣條繪制方法,默認(rèn)張力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);
}鼠標(biāo)拖動(dòng): protected override void OnMouseMove(MouseEventArgs e)
{
mousePoint = e.Location;
if (mouseDown)
{
if (Current != null)
{
Current = mousePoint;
}
Refresh();
}
}更多帶節(jié)點(diǎn)曲線,鼠標(biāo)可拖動(dòng)節(jié)點(diǎn)調(diào)整曲線,類似Photoshop相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)! Photoshop默認(rèn)保存的文件格式,可以保留所有有圖層、色版、通道、蒙版、路徑、未柵格化文字以及圖層樣式等。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!