WPF實現簡單的顏色調色盤功能

2021-09-19 16:21:12 字數 2793 閱讀 4811

winform有自帶的colordialog功能,wpf可以通過引用system.windows.forms的方式來建立調色盤,在這裡僅使用canvas等控制項來實現簡單的調色盤。效果如下:

gif錄製的比較渣,實際效果圖:

1、窗體xaml

2、互動邏輯

using system;

using system.windows;

using system.windows.controls;

using system.windows.input;

using system.windows.media;

using system.windows.media.imaging;

namespace colorselectordemo

/// /// 獲得色譜位圖物件

///

public void setcolorback()}}

/// /// 設定色譜位圖

///

public system.drawing.bitmap setbasecolorback()

}//將bitmap轉換為bitmapsource

system.drawing.graphics g = system.drawing.graphics.fromimage(colorbmp);

g.interpolationmode = system.drawing.drawing2d.interpolationmode.highqualitybicubic;

using (system.io.memorystream ms = new system.io.memorystream())

g.dispose();

return colorbmp;

}/// /// 設定亮度位圖

///

public void setlightback()

}//將bitmap轉換為bitmapsource

system.drawing.graphics g = system.drawing.graphics.fromimage(lightbmp);

g.interpolationmode = system.drawing.drawing2d.interpolationmode.highqualitybicubic;

using (system.io.memorystream ms = new system.io.memorystream())

g.dispose();

}/// /// 設定具體座標的色彩值

///

public int setcolornum(int self, int y, bool isadd)

/// /// 顏色變數區域限制

///

public int intmaxmin(int num)

/// /// 設定顏色為白色

///

public system.drawing.color setcolorwhite(system.drawing.color c, int white = 50)

#region 調色盤滑鼠事件

private void imgcolor_mousedown(object sender, mousebuttoneventargs e)

private void imgcolor_mousemove(object sender, mouseeventargs e)

private void imgcolor_mouseup(object sender, mousebuttoneventargs e)

/// /// 同時設定顏色選擇點位置

///

public void setcolorpoint(mouseeventargs e)

}private void imgcolorshowchange()

/// /// 顏色校正

///

public system.drawing.color colorright(system.drawing.color c)

#endregion

#region 亮度調節滑鼠事件

private void imgcolorselector_mousedown(object sender, mousebuttoneventargs e)

private void imgcolorselector_mousemove(object sender, mouseeventargs e)

private void imgcolorselector_mouseup(object sender, mousebuttoneventargs e)

/// /// 同步設定亮度選擇點位置

///

public void setlightpoint(mouseeventargs e)

}private void imgcolorselectorchange()

#endregion}}

只是簡單的實現,由於顏色數值限制在255以內,所以控制項的寬高比較侷限,如果高度設定的過大,底部黑色部分就會比較多,可以考慮加入縮放引數來進行調整,另外其他功能還需要進一步完善,比如加入對rgb數值的繫結等,有時間和精力的時候可以嘗試完善下。

簡單的色調

為部落格換上簡單的色調,自己照的相片做版頭,背景還是我最喜歡的顏色。生活從來都不簡單,物質的需求,精神的慾望 還有被理解的需要。得不到,甚至也沒辦法觸碰得到。擔心受怕會過得不好,更害怕會辜負乙個人。因此生活從來都很累。看不到未來的顏色,兩眼望去只有一片灰濛濛甚至是黑暗的色澤。這是因為期望過多?還是合...

256色調色盤的匹配處理

staticunsigned col diff 3 128 static void bestfit init uchar lpbestfitcolor rgb pal,short r,short g,short b i returnbestfit 有了這個函式的功能,問題就解決了。下面我們生成一張r...

WPF 實現簡單的跑馬燈

本文用wpf的動畫實現乙個簡單的跑馬燈 xmal 下面是乙個最簡單的例子,就讓label動起來 public mainwindow 然後進入正題,利用定時器實現乙個簡單的迴圈滾動3個label的跑馬燈 關鍵點在於第三個lab滾動的時候怎麼銜接第乙個lab,其實很簡單,就是多new了乙個和第乙個lab...