中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

學(xué)做網(wǎng)站必須php嗎seo jsbapp9

學(xué)做網(wǎng)站必須php嗎,seo jsbapp9,用wordpress建站案例,做網(wǎng)站建設(shè)的公司有哪些文章目錄 需求來源實(shí)現(xiàn)思路實(shí)施請看VCR等等別走,有優(yōu)化 需求來源 需要在鼠標(biāo)浮動到指定位置后提示出詳細(xì)的信息,一開始使用的tooltip實(shí)現(xiàn),但是里面的內(nèi)容效果并不理想,需要有條理性,于是就想到能不能將展示的東西分列…

文章目錄

  • 需求來源
  • 實(shí)現(xiàn)思路
  • 實(shí)施
  • 請看VCR
  • 等等別走,有優(yōu)化

需求來源

需要在鼠標(biāo)浮動到指定位置后提示出詳細(xì)的信息,一開始使用的tooltip實(shí)現(xiàn),但是里面的內(nèi)容效果并不理想,需要有條理性,于是就想到能不能將展示的東西分列。

實(shí)現(xiàn)思路

使用兩個字符串?dāng)?shù)據(jù)接收通過字符串切割后的內(nèi)容,然后通過在tooltip的draw事件繪制時將內(nèi)容分為兩次繪制。

實(shí)施

自定封裝一個ToolTip控件,繼承ToolTIp然后添加兩個事件,分別時Draw Popup
DrawPopup 這兩個事件在 ToolTip 類中扮演著重要的角色,用于自定義工具提示的顯示和繪制。

Draw 事件在工具提示需要繪制時觸發(fā)。通過處理這個事件,可以自定義工具提示的外觀和內(nèi)容。

  • 作用

    • 自定義繪制工具提示:在處理 Draw 事件時,可以完全控制工具提示的繪制,包括背景顏色、邊框、文本內(nèi)容和文本樣式等。
    • 實(shí)現(xiàn)高級圖形效果:可以使用 Graphics 對象來實(shí)現(xiàn)復(fù)雜的繪制效果,比如漸變色、圖片、各種形狀等。
  • 使用場景

    • 當(dāng)默認(rèn)的工具提示外觀不能滿足需求時,可以通過 Draw 事件自定義繪制工具提示。
    • 需要在工具提示中顯示非文本內(nèi)容(如圖像、圖表)時,可以在 Draw 事件中實(shí)現(xiàn)。

Popup 事件在工具提示顯示之前觸發(fā)。通過處理這個事件,可以動態(tài)調(diào)整工具提示的大小和內(nèi)容。

  • 作用

    • 動態(tài)調(diào)整工具提示大小:在處理 Popup 事件時,可以根據(jù)內(nèi)容的大小動態(tài)設(shè)置工具提示的尺寸,以確保內(nèi)容完全顯示。
    • 準(zhǔn)備繪制環(huán)境:可以在 Popup 事件中進(jìn)行一些準(zhǔn)備工作,比如計(jì)算文本的最大寬度和高度,為后續(xù)的 Draw 事件做準(zhǔn)備。
  • 使用場景

    • 需要根據(jù)內(nèi)容動態(tài)調(diào)整工具提示的大小時,可以在 Popup 事件中進(jìn)行計(jì)算和設(shè)置。
    • 需要在工具提示顯示前進(jìn)行一些準(zhǔn)備工作,比如加載圖片、計(jì)算文本尺寸等,可以在 Popup 事件中處理。
using System;
using System.Drawing;
using System.Windows.Forms;namespace Test1
{// 自定義工具提示類,繼承自 ToolTippublic class CustomToolTip : ToolTip{private string[] Column1; // 用于存儲第一列的文本數(shù)組private string[] Column2; // 用于存儲第二列的文本數(shù)組private Font TextFont; // 工具提示文本的字體// 記錄第一列的寬度private int Column1MaxWidth = 0;// 構(gòu)造函數(shù),初始化自定義工具提示public CustomToolTip(){TextFont = new Font("微軟雅黑", 15.0f); // 設(shè)置字體為“微軟雅黑”,大小為15this.OwnerDraw = true; // 啟用自定義繪制工具提示this.Draw += new DrawToolTipEventHandler(OnDraw); // 訂閱 Draw 事件this.Popup += new PopupEventHandler(OnPopup); // 訂閱 Popup 事件}// 設(shè)置工具提示的內(nèi)容,將其拆分為兩列public void SetContent(string content){var parts = content.Split(new string[] { "," }, StringSplitOptions.None); // 按逗號拆分內(nèi)容int midPoint = (parts.Length + 1) / 2; // 計(jì)算拆分成兩列的中間點(diǎn)Column1 = new string[midPoint]; // 初始化第一列數(shù)組Column2 = new string[parts.Length - midPoint]; // 初始化第二列數(shù)組// 填充列數(shù)組for (int i = 0; i < parts.Length; i++){if (i < midPoint){Column1[i] = parts[i];}else{Column2[i - midPoint] = parts[i];}}}// 自定義工具提示的繪制事件處理程序private void OnDraw(object sender, DrawToolTipEventArgs e){e.DrawBackground(); // 繪制工具提示的背景e.DrawBorder(); // 繪制工具提示的邊框Brush brush = Brushes.Black; // 用于繪制文本的畫筆Rectangle rct2 = e.Bounds; // 工具提示的邊界e.Graphics.FillRectangle(Brushes.Bisque, rct2); // 用淺橙色填充背景e.Graphics.DrawRectangle(Pens.DarkGray, new Rectangle(0, 0, rct2.Width - 1, rct2.Height - 1)); // 繪制邊框// 繪制第一列文本for (int i = 0; i < Column1.Length; i++){e.Graphics.DrawString(Column1[i], TextFont, brush, new PointF(5, i * 25));}// 繪制第二列文本for (int i = 0; i < Column2.Length; i++){e.Graphics.DrawString(Column2[i], TextFont, brush, new PointF(Column1MaxWidth, i * 25));}}// 在工具提示顯示之前計(jì)算其大小的事件處理程序private void OnPopup(object sender, PopupEventArgs e){int Column2MaxWidth = 0; // 用于存儲第二列的最大寬度int maxHeight = 0; // 用于存儲工具提示的最大高度// 計(jì)算第一列的最大寬度和高度foreach (var text in Column1){var sz = TextRenderer.MeasureText(text, TextFont);if (sz.Width > Column1MaxWidth)Column1MaxWidth = sz.Width;maxHeight += sz.Height;}// 計(jì)算第二列的最大寬度foreach (var text in Column2){var sz = TextRenderer.MeasureText(text, TextFont);if (sz.Width > Column2MaxWidth)Column2MaxWidth = sz.Width;}// 確保高度適應(yīng)兩列中較高的一列maxHeight = Math.Max(maxHeight, Column2.Length * TextRenderer.MeasureText("A", TextFont).Height);e.ToolTipSize = new Size(Column1MaxWidth + Column2MaxWidth + 20, maxHeight + 30); // 設(shè)置工具提示大小,并添加一些間距}}
}

這里對字符串的分割是根據(jù),來的,根據(jù)個人需要修改SetContent方法中切割字符,當(dāng)然也可以封裝一下,這里本人偷懶了。
下面是使用的方式,先在我們窗體中創(chuàng)建一個自定義的Tooltip對象,具體使用就是先設(shè)置SetContent方法將要顯示的內(nèi)容傳遞進(jìn)去。最后將要tooltip關(guān)聯(lián)的控件對象綁定就行了

  private CustomToolTip custom = new CustomToolTip();private void Form1_Load(object sender, EventArgs e){string aa = $"工作人員姓名:aaa,出勤地點(diǎn):aaa333344445555555555," +$"工號:aaa,出勤時間:aaa," +$"手機(jī):aaaaaaaa,本站時間:aaa," +$"站名:aaa,工作班制:aaa," +$"當(dāng)前已工作時間:aaa,班制時長:aaa1111," +$"工作人員所屬部門:aaa";custom.SetContent(aa);custom.SetToolTip(button1,aa);//這里傳遞第二個參數(shù)只要是字符串就行,因?yàn)樵赟etContent方法時已經(jīng)設(shè)置好要顯示的內(nèi)容了。}

請看VCR

在這里插入圖片描述

等等別走,有優(yōu)化

鑒于上面我們使用的在From_Load方法中去使用自定義tip時調(diào)用SetToolTip時第二個參數(shù)傳遞有些冗余,這里把自定義的tip控件給優(yōu)化了一下,優(yōu)化雖小也是進(jìn)步

using System;
using System.Drawing;
using System.Windows.Forms;namespace Test1
{// 自定義工具提示類,繼承自 ToolTippublic class CustomToolTip : ToolTip{private string[] Column1; // 用于存儲第一列的文本數(shù)組private string[] Column2; // 用于存儲第二列的文本數(shù)組private Font TextFont; // 工具提示文本的字體priavte Control ParentCtrl;//父窗體控件// 記錄第一列的寬度private int Column1MaxWidth = 0;// 構(gòu)造函數(shù),初始化自定義工具提示public CustomToolTip(){TextFont = new Font("微軟雅黑", 15.0f); // 設(shè)置字體為“微軟雅黑”,大小為15this.OwnerDraw = true; // 啟用自定義繪制工具提示this.Draw += new DrawToolTipEventHandler(OnDraw); // 訂閱 Draw 事件this.Popup += new PopupEventHandler(OnPopup); // 訂閱 Popup 事件}// 設(shè)置工具提示的內(nèi)容,將其拆分為兩列private void SetContent(string content){var parts = content.Split(new string[] { "," }, StringSplitOptions.None); // 按逗號拆分內(nèi)容int midPoint = (parts.Length + 1) / 2; // 計(jì)算拆分成兩列的中間點(diǎn)Column1 = new string[midPoint]; // 初始化第一列數(shù)組Column2 = new string[parts.Length - midPoint]; // 初始化第二列數(shù)組// 填充列數(shù)組for (int i = 0; i < parts.Length; i++){if (i < midPoint){Column1[i] = parts[i];}else{Column2[i - midPoint] = parts[i];}}}// 自定義工具提示的繪制事件處理程序private void OnDraw(object sender, DrawToolTipEventArgs e){e.DrawBackground(); // 繪制工具提示的背景e.DrawBorder(); // 繪制工具提示的邊框Brush brush = Brushes.Black; // 用于繪制文本的畫筆Rectangle rct2 = e.Bounds; // 工具提示的邊界e.Graphics.FillRectangle(Brushes.Bisque, rct2); // 用淺橙色填充背景e.Graphics.DrawRectangle(Pens.DarkGray, new Rectangle(0, 0, rct2.Width - 1, rct2.Height - 1)); // 繪制邊框// 繪制第一列文本for (int i = 0; i < Column1.Length; i++){e.Graphics.DrawString(Column1[i], TextFont, brush, new PointF(5, i * 25));}// 繪制第二列文本for (int i = 0; i < Column2.Length; i++){e.Graphics.DrawString(Column2[i], TextFont, brush, new PointF(Column1MaxWidth, i * 25));}}// 在工具提示顯示之前計(jì)算其大小的事件處理程序private void OnPopup(object sender, PopupEventArgs e){int Column2MaxWidth = 0; // 用于存儲第二列的最大寬度int maxHeight = 0; // 用于存儲工具提示的最大高度//設(shè)置將文本拆分兩個數(shù)組,用于后期顯示為兩列---在這里通過tip控件自帶的GetToolTip方法獲取提示文本內(nèi)容然后進(jìn)行拆分初始化SetContent(this.GetToolTip(ParentCtrl));// 計(jì)算第一列的最大寬度和高度foreach (var text in Column1){var sz = TextRenderer.MeasureText(text, TextFont);if (sz.Width > Column1MaxWidth)Column1MaxWidth = sz.Width;maxHeight += sz.Height;}// 計(jì)算第二列的最大寬度foreach (var text in Column2){var sz = TextRenderer.MeasureText(text, TextFont);if (sz.Width > Column2MaxWidth)Column2MaxWidth = sz.Width;}// 確保高度適應(yīng)兩列中較高的一列maxHeight = Math.Max(maxHeight, Column2.Length * TextRenderer.MeasureText("A", TextFont).Height);e.ToolTipSize = new Size(Column1MaxWidth + Column2MaxWidth + 20, maxHeight + 30); // 設(shè)置工具提示大小,并添加一些間距}}
}
        private CustomToolTip custom ;public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){custom = new CustomToolTip(button1);string aa = $"工作人員姓名:aaa,出勤地點(diǎn):aaa333344445555555555," +$"工號:aaa,出勤時間:aaa," +$"手機(jī):aaaaaaaa,本站時間:aaa," +$"站名:aaa,工作班制:aaa," +$"當(dāng)前已工作時間:aaa,班制時長:aaa1111," +$"工作人員所屬部門:aaa";custom.SetToolTip(button1,aa);}
http://www.risenshineclean.com/news/35690.html

相關(guān)文章:

  • 做國外網(wǎng)站關(guān)鍵詞用寫營銷推廣內(nèi)容
  • 不用fash做的視頻網(wǎng)站個人怎么做網(wǎng)站
  • 網(wǎng)站開發(fā)投標(biāo)書范本目錄阿里云域名注冊查詢
  • vb實(shí)現(xiàn)asp網(wǎng)站開發(fā)百度圖像搜索
  • 建站寶盒做的網(wǎng)站遼源seo
  • 自學(xué)做網(wǎng)站要多久成都公司網(wǎng)站seo
  • 自己做網(wǎng)站哪里最好網(wǎng)絡(luò)推廣方法有幾種
  • 單位的網(wǎng)站怎樣設(shè)計(jì)才美觀鹽城seo營銷
  • 網(wǎng)站設(shè)計(jì)制作公司地址網(wǎng)推項(xiàng)目接單平臺
  • 懷來縣建設(shè)局網(wǎng)站seo綜合查詢 站長工具
  • 搜索引擎收錄提交優(yōu)化營商環(huán)境條例
  • 蘇州園區(qū)房價狼雨seo網(wǎng)站
  • 主機(jī)銷售網(wǎng)站源碼網(wǎng)絡(luò)營銷做得比較成功的案例
  • 有個音樂網(wǎng)站老板做淫穢直播被抓如何讓百度快速收錄
  • wordpress建站哪里好百度指數(shù)移動版app
  • php網(wǎng)站建設(shè)的基本流程圖中山360推廣
  • 河源網(wǎng)站設(shè)計(jì)短視頻營銷推廣方案
  • 長春網(wǎng)站建設(shè)及推廣免費(fèi)seo網(wǎng)站推廣在線觀看
  • 深圳市官網(wǎng)網(wǎng)站建設(shè)報(bào)價注冊網(wǎng)站流程和費(fèi)用
  • 網(wǎng)站備案流程實(shí)名認(rèn)證東莞網(wǎng)站制作外包
  • Linux主機(jī)設(shè)置網(wǎng)站首頁計(jì)算機(jī)培訓(xùn)課程
  • 延慶b2c網(wǎng)站制作價格百度推廣售后
  • 建立網(wǎng)站如何推廣東莞優(yōu)化疫情防控措施
  • 商丘做網(wǎng)站需要多少錢企業(yè)seo案例
  • 手機(jī)高端網(wǎng)站開發(fā)企業(yè)網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)論文
  • 做網(wǎng)站 (公司)如何做好平臺推廣
  • 做外貿(mào)怎樣免費(fèi)登錄外國網(wǎng)站網(wǎng)頁設(shè)計(jì)首頁制作
  • 網(wǎng)站數(shù)據(jù)庫連接失敗百度識圖在線識別
  • 做教程的網(wǎng)站內(nèi)容怎么找百度統(tǒng)計(jì)收費(fèi)嗎
  • 汕頭個人建站模板seo排名優(yōu)化技術(shù)