移除 DevExpress 的 XtraForm 標題文字陰影

来源:https://www.cnblogs.com/myzony/archive/2019/07/31/11276001.html
-Advertisement-
Play Games

問題 在使用 DevExpress 開發 WinForm 程式時,我是使用的預設皮膚進行開發。但客戶要求標題欄背景色改為藍色,標題文字顏色改為白色。 改顏色比較簡單,參考了 "DevExpress Support" 的說明,通過獲取皮膚更改 和 就可以實現。不過更改之後,發現在低分屏下麵,標題文字出 ...


問題

在使用 DevExpress 開發 WinForm 程式時,我是使用的預設皮膚進行開發。但客戶要求標題欄背景色改為藍色,標題文字顏色改為白色。

改顏色比較簡單,參考了 DevExpress Support 的說明,通過獲取皮膚更改 BackColorForeColor 就可以實現。不過更改之後,發現在低分屏下麵,標題文字出現模糊的情況。

原因

初步猜想應該是文字陰影的問題,但搜索了大部分資料沒有找到解決方案,最後在 DevExpress Support 的這篇文章看到了自定義 FormPainter 。起初我認為是重載 DrawText() 解決,不過沒有找到相關的參數,之後發現它有一個 DrawTextShadow() 方法,應該就是它了。

解決

解決方法很簡單,就是重寫 DrawTextShadow() 方法,將其作為一個空方法就行了,不做任何陰影處理。

public class ReplaceFontFormPainter : FormPainter
{
    public ReplaceFontFormPainter(Control owner, ISkinProvider provider) : base(owner, provider)
    {
        
    }
    
    // 不再繪製標題文字陰影。
    protected override void DrawTextShadow(GraphicsCache cache, AppearanceObject appearance, Rectangle bounds)
    {
        
    }
}

來到你需要更改的窗體,重載窗體的 CreateFormBorderPainter() 方法,使用你自己創建的 FormPainter

public partial class MainForm : XtraForm
{
    protected override FormPainter CreateFormBorderPainter() => new ReplaceFontFormPainter(this, LookAndFeel);
}

最後的效果:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、將一個值類型變數賦給另一個值類型變數時,將複製包含的值。引用變數的賦值只複製對對象的引用,而不複製對象本身。 2、值類型不可能派生出新的類型:所有的值類型均隱式派生自 System.ValueType.但與引用類型相同的是,結構也可以實現介面。 3、值類型不可能包含null 值;然後,可空類型功 ...
  • 1.改變RectTransform的Left和Buttom offsetMax是一個Vector2類型 offsetMax.x即為RectTransform中的Left offsetMax.y即為RectTransform中的Buttom 2.改變RectTransform的Right和Top of ...
  • 1、Connection:主要是開啟程式和資料庫之間的連接。沒有利用連接對象將資料庫打開,是無法從資料庫中取得數據的。 Close和Dispose的區別,Close以後還可以Open,Dispose以後則不能再用。 2、Command:主要可以用來對資料庫發出一些指令,例如可以對資料庫下達查詢、新增 ...
  • 問道 面向Abp 在面向服務的時候,Session 幹嘛用? 先把Session 的作用說了,但是在微服務環境下給忽略了,相當於忽略了核心。 Session 只是個功能。就是根據Cookie 的SessionId 得到的一個KeyValue列表 實際上Session 就是一個緩存可以向寫東西,讀東西 ...
  • 之前做數據同步時,用過timer、window服務,現在不用那麼費事了,可以使用Quartz,並且配置靈活,使用cron表達式配置XML就可以。我用的是3.0.7版本支持.netcore。 首先創建一個.netcore控制台應用程式,添加Quartz、Quartz.Jobs、Quartz.Plugi ...
  • 1、元素屬性 XAML是一種聲明性語言,XAML編譯器會為每一個標簽創建一個與之對應的對象。對象創建出來之後要對它的屬性進行必要的初始化之後才有使用意義。因為XAML語言不能寫程式運行邏輯,所以一份XAML文檔除了使用標簽聲明對象,另外一個功能就是初始化對象的屬性了。在XAML中為對象屬性賦值共有兩 ...
  • 無論是哪種C/S技術,涉及數據可視化就非常的累贅了,當然大神也一定有,只不過面向大多數人,還是通過網頁來實現,有的時候不想把這兩個功能分開,一般會是客戶的原因,所以我們打算在WPF中嵌入WebBrowser,然後使用ECharts 完成複雜的圖表展示,其功能不亞於一個名為Devexpress的圖標庫 ...
  • 使用編譯器可以將C#代碼編譯為中間語言(Intermediate Language,IL)代碼,中間語言是一種平臺無關的指令集,最終會由CLR將中間語言位元組碼轉換為對應平臺的機器碼從而執行;閱讀IL代碼通常可以讓我們更好的瞭解C#的底層實現方式; ※中間語言又稱為通用中間語言(Common Inte ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...