forms+windows添加激活水印

forms+windows添加激活水印

  1. 多語言水印文本,根據系統語言自動切換。
  2. 水印顯示在每個屏幕的右下角,位置動態調整。
  3. 半透明灰色文字,微軟雅黑字體。
  4. 窗口無邊框、置頂、透明背景,不干擾用戶操作。
  5. 支持多顯示器。
  6. 高DPI適配。

效果圖:
在這里插入圖片描述

step1:C:\Users\wangrusheng\RiderProjects\WinFormsApp37\WinFormsApp37\Program.cs

namespace WinFormsApp37;static class Program
{/// <summary>///  The main entry point for the application./// </summary>[STAThread]static void Main(){Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);Application.EnableVisualStyles();foreach (var screen in Screen.AllScreens){new WatermarkForm(screen).Show();}Application.Run();}
}

step2:C:\Users\wangrusheng\RiderProjects\WinFormsApp37\WinFormsApp37\WatermarkForm.cs

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.Windows.Forms;
using System.Runtime.InteropServices;namespace WinFormsApp37;public class WatermarkForm : Form
{[DllImport("user32.dll")]static extern int GetWindowLong(IntPtr hWnd, int nIndex);[DllImport("user32.dll")]static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);const int GWL_EXSTYLE = -20;const int WS_EX_LAYERED = 0x80000;const int WS_EX_TRANSPARENT = 0x20;private readonly string text1, text2;private readonly Font font = new Font("Microsoft YaHei", 20, FontStyle.Regular);public WatermarkForm(Screen screen){// 初始化窗口屬性InitializeWindow();// 加載多語言文本var translations = LoadTranslations();string lang = CultureInfo.CurrentCulture.TwoLetterISOLanguageName;text1 = translations.TryGetValue($"{lang}_line1", out var t1) ? t1 : "Activate Windows";text2 = translations.TryGetValue($"{lang}_line2", out var t2) ? t2 : "Go to Settings to activate Windows";// 計算窗口位置CalculatePosition(screen);}private void InitializeWindow(){FormBorderStyle = FormBorderStyle.None;TopMost = true;BackColor = Color.Magenta;TransparencyKey = Color.Magenta;ShowInTaskbar = false;// 設置窗口樣式int style = GetWindowLong(Handle, GWL_EXSTYLE);SetWindowLong(Handle, GWL_EXSTYLE, style | WS_EX_LAYERED | WS_EX_TRANSPARENT);}private Dictionary<string, string> LoadTranslations() => new(){["zh_line1"] = "激活 Windows",["zh_line2"] = "轉到“設置”以激活 Windows",["en_line1"] = "Activate Windows",["en_line2"] = "Go to Settings to activate Windows",// 其他語言翻譯...};private void CalculatePosition(Screen screen){using var g = CreateGraphics();var size1 = g.MeasureString(text1, font);var size2 = g.MeasureString(text2, font);int width = (int)Math.Max(size1.Width, size2.Width) + 20;int height = (int)(size1.Height + size2.Height) + 10;Location = new Point(screen.Bounds.Right - width - 50,screen.Bounds.Bottom - height - 80);Size = new Size(width, height);}protected override void OnPaint(PaintEventArgs e){base.OnPaint(e);using var brush = new SolidBrush(Color.FromArgb(160, 120, 120, 120));e.Graphics.DrawString(text1, font, brush, 0, 0);e.Graphics.DrawString(text2, font, brush, 0, font.Height + 2);}
}

end

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76549.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode --- 444 周賽

題目列表 3507. 移除最小數對使數組有序 I 3508. 設計路由器 3509. 最大化交錯和為 K 的子序列乘積 3510. 移除最小數對使數組有序 II 一、移除最小數對使數組有序 I & II 由于數組是給定的&#xff0c;所以本題的操作步驟是固定的&#xff0c;我們只要能快速模擬操作的過…

限流、降級、熔斷、隔離?

在微服務架構中&#xff0c;服務限流、降級、熔斷和隔離是保障系統高可用性的核心手段&#xff0c;但它們解決的問題和應用場景不同。以下是它們的區別、解決方案和實際案例的詳細說明&#xff1a; 一、服務限流&#xff08;Rate Limiting&#xff09; 定義&#xff1a;通過限…

Day22 -php開發01--留言板+知識點(超全局變量 文件包含 數據庫操作 第三方插件)

環境要求&#xff1a;php7.0.9 小皮 navicat phpstorm24.1 知識點&#xff1a;會寫&#xff08;留言板 留言板后臺&#xff09; 超全局變量 三方插件的使用 文件包含 1、開啟小皮并利用navicat新建一個數據庫 注意&#xff1a;本地的服務mysql關閉后 才可打開小皮。屬…

制造一只電子喵 (qwen2.5:0.5b 微調 LoRA 使用 llama-factory)

AI (神經網絡模型) 可以認為是計算機的一種新的 “編程” 方式. 為了充分利用計算機, 只學習傳統的編程 (編程語言/代碼) 是不夠的, 我們還要掌握 AI. 本文以 qwen2.5 和 llama-factory 舉栗, 介紹語言模型 (LLM) 的微調 (LoRA SFT). 為了方便上手, 此處選擇使用小模型 (qwen2…

LeetCode 解題思路 37(Hot 100)

解題思路&#xff1a; 初始化&#xff1a; 初始化最大舉行 max 和棧 stack。左右補零&#xff1a; 考慮柱子遞增的邊界情況&#xff0c; 初始化填充柱狀圖 newHeights。遍歷處理&#xff1a; 對于每一根遍歷到的柱子 newHeights[i]&#xff0c;若柱子高度小于棧口索引&#xf…

HTML — 過渡與動畫

HTML過渡與動畫是提升網頁交互體驗的核心技術&#xff0c;主要通過CSS實現動態效果。 過渡 CSS過渡&#xff08;Transition&#xff09;介紹 適用于元素屬性變化時的平滑漸變效果&#xff0c;如懸停變色、尺寸調整。通過定義transition-property&#xff08;過渡屬性&#xf…

跨站請求是什么?

介紹 跨站請求&#xff08;Cross-Site Request&#xff09;通常是指瀏覽器在訪問一個網站時&#xff0c;向另一個域名的網站發送請求的行為。這個概念在 Web 安全中非常重要&#xff0c;尤其是在涉及到“跨站請求偽造&#xff08;CSRF&#xff09;”和“跨域資源共享&#xff…

Web攻防—SSRF服務端請求偽造Gopher偽協議無回顯利用

前言 重學Top10的第二篇&#xff0c;希望各位大佬不要見笑。 SSRF原理 SSRF又叫服務端請求偽造&#xff0c;是一種由服務端發起的惡意請求&#xff0c;SSRF發生在應用程序允許攻擊者誘使服務器向任意域或資源發送未經授權的請求時。服務器充當代理&#xff0c;執行攻擊者構造…

Hibernate:讓對象與數據庫無縫對話的全自動ORM框架

一、為什么需要全自動ORM&#xff1f; 在手動編寫SQL的時代&#xff0c;開發者需要在Java代碼和數據庫表之間來回切換&#xff1a; // Java對象 public class User {private Long id;private String name;// getters and setters }// SQL語句 SELECT * FROM user WHERE id ?…

C語言超詳細指針知識(一)

通過前面一段時間C語言的學習&#xff0c;我們了解了數組&#xff0c;函數&#xff0c;操作符等的相關知識&#xff0c;今天我們將要開始進行指針的學習&#xff0c;這是C語言中較難掌握的一個部分&#xff0c;一定要認真學習&#xff01;&#xff01;&#xff01; 1.內存與地址…

程序化廣告行業(70/89):ABTester系統助力落地頁優化實踐

程序化廣告行業&#xff08;70/89&#xff09;&#xff1a;ABTester系統助力落地頁優化實踐 在程序化廣告領域摸爬滾打多年&#xff0c;深知持續學習和知識共享的重要性。寫這篇博客&#xff0c;就是希望能和大家一起深入探索程序化廣告行業&#xff0c;共同學習、共同進步。今…

項目管理(高軟56)

系列文章目錄 項目管理 文章目錄 系列文章目錄前言一、進度管理二、配置管理三、質量四、風險管理五、真題總結 前言 本節主要講項目管理知識&#xff0c;這些知識聽的有點意思啊。對于技術人想創業&#xff0c;單干的都很有必要聽聽。 一、進度管理 二、配置管理 三、質量 四…

常見的后綴名

.exe .exe&#xff08;“executable”&#xff08;可執行的&#xff09;&#xff09;是 Windows 操作系統中最常見的可執行文件擴展名。此類文件包含了計算機能夠直接運行的機器碼指令。當用戶雙擊 .exe 文件時&#xff0c;操作系統會讀取其中的指令并執行相應的程序或任務。…

XILINX DDR3專題---(1)IP核時鐘框架介紹

1.什么是Reference Clock&#xff0c;這個時鐘一定是200MHz嗎&#xff1f; 2.為什么APP_DATA是128bit&#xff0c;怎么算出來的&#xff1f; 3.APP &#xff1a;MEM的比值一定是1:4嗎&#xff1f; 4.NO BUFFER是什么意思&#xff1f; 5.什么情況下Reference Clock的時鐘源可…

Doris 安裝部署、實際應用及優化實踐:對比 ClickHouse 的深度解析

在實時分析、報表系統以及高并發 OLAP 查詢等場景中&#xff0c;列式存儲數據庫因其卓越的查詢性能逐漸成為主流。Doris 和 ClickHouse 是近年來最受歡迎的兩款開源 OLAP 引擎&#xff0c;本文將系統介紹 Doris 的安裝部署、應用場景及優化實踐&#xff0c;并與 ClickHouse 做一…

OracleLinuxR5U5系統重啟后啟動數據庫oracle23ai

1、切換到oracle用戶 [rootOracleLinux-R9-U5 ~]# su oracle2、查看oracle是否配置了ORACLE_SID [oracleOracleLinux-R9-U5 root]$ cd ~ [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile3、輸出內容如下&#xff1a; [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile # .ba…

【正點原子】STM32MP257 同構多核架構下的 ADC 電壓采集與處理應用開發實戰

在嵌入式系統中&#xff0c;ADC模擬電壓的讀取是常見的需求。如何高效、并發、且可控地完成數據采集與處理&#xff1f;本篇文章通過雙線程分別綁定在 Linux 系統的不同 CPU 核心上&#xff0c;采集 /sys/bus/iio 接口的 ADC 原始值與縮放系數 scale&#xff0c;并在另一個核上…

電商用戶購物行為分析:基于K-Means聚類與分類驗證的完整流程

隨著電商行業的快速發展,用戶行為分析成為企業優化營銷策略、提升用戶體驗的重要手段。通過分析用戶的購物行為數據,企業可以挖掘出用戶群體的消費特征和行為模式,從而制定更加精準的營銷策略。本文將詳細介紹一個基于Python實現的電商用戶購物行為分析系統,涵蓋數據預處理…

AMGCL庫的Backends及使用示例

AMGCL庫的Backends及使用示例 AMGCL是一個用于解決大型稀疏線性方程組的C庫&#xff0c;它提供了多種后端(backends)實現&#xff0c;允許用戶根據不同的硬件和性能需求選擇合適的計算后端。 AMGCL支持的主要Backends 內置Backends: builtin - 默認的純C實現block - 支持塊狀…

Express中間件(Middleware)詳解:從零開始掌握(3)

實用中間件模式25例 1. 基礎增強模式 請求屬性擴展 function extendRequest() {return (req, res, next) > {req.getClientLanguage () > {return req.headers[accept-language]?.split(,)[0] || en;};next();}; } 響應時間頭 function responseTime() {return (r…