天天看點

WPF 如何畫出1像素的線

如何有人告訴你,請你畫出1像素的線,是不是覺得很簡單,實際上在 WPF 上還是比較難的。

本文告訴大家,如何讓畫出的線不模糊

畫出線的第一個方法,建立一個 Canvas ,添加一個線

界面代碼

在背景添加一條線

那麼如何看到線模糊呢?

簡單方法是使用 ViewBox 和放大鏡,可以看到模糊

在界面添加下面代碼

這時拖動視窗可以看到線放大

可以看到線是模糊的,如果想要讓線不模糊,可以添加下面的代碼

這個方法是從 [https://stackoverflow.com/q/2879033/6116637][https://stackoverflow.com/q/2879033/6116637]得到,但是無法對于自己的控件

如果自己建立一個控件,那麼直接使用 dc.DrawLine 得到不是清晰的

建立一個類自定義控件,添加下面的代碼畫出線

可以看到,畫出來的線是模糊的,于是看了微軟的代碼

看了他的矩形是如何畫的,看到他畫出來的是清晰的,但是複制他的代碼到我的控件,畫出來不是清晰的

下面代碼是我複制他的,但是自己的控件畫出來在放大時,線模糊,是以直接複制是無法做到wr的矩形那樣

在界面畫出來wr 的矩形和自定義控件,可以看到,微軟的是清晰的

那麼是不是wr 做了特殊的東西,到現在還不知道,但是找到了一個方法,可以畫出清晰

縮小看到的圖檔是這樣

那麼放大時就是下面這張圖

是以需要在放大時,也畫一個像素,

這個方法就是本文,是以這是在翻譯,隻是沒有使用對所有的文字翻譯,來自工藤大神的方法。

本文使用的方法很簡單,第一步

複制方法到一個靜态類

然後就可以在自定義控件使用下面的代碼

可以看到線是清晰的

參見:https://stackoverflow.com/a/45189552/6116637

http://www.nbdtech.com/Blog/archive/2008/11/20/blurred-images-in-wpf.aspx

WPF 如何畫出1像素的線

本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協定進行許可。歡迎轉載、使用、重新釋出,但務必保留文章署名林德熙(包含連結:http://blog.csdn.net/lindexi_gd ),不得用于商業目的,基于本文修改後的作品務必以相同的許可釋出。如有任何疑問,請與我聯系。

部落格園部落格隻做備份,部落格釋出就不再更新,如果想看最新部落格,請到 https://blog.lindexi.com/

WPF 如何畫出1像素的線

本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協定進行許可。歡迎轉載、使用、重新釋出,但務必保留文章署名[林德熙](http://blog.csdn.net/lindexi_gd)(包含連結:http://blog.csdn.net/lindexi_gd ),不得用于商業目的,基于本文修改後的作品務必以相同的許可釋出。如有任何疑問,請與我[聯系](mailto:[email protected])。