How to: Display a Gradient Fill

To display a gradient fill

  1. 第一步:In Visual Studio, create a Smart Device project.

  2. 第二部:Add the Gradientfill and GradientFilledButton classes to your project.

  3. ?

  4. ?

  5. public sealed class GradientFill
    {
    ??? // This method wraps the PInvoke to GradientFill.
    ??? // Parmeters:
    ??? //? gr - The Graphics object we are filling
    ??? //? rc - The rectangle to fill
    ??? //? startColor - The starting color for the fill
    ??? //? endColor - The ending color for the fill
    ??? //? fillDir - The direction to fill
    ??? //
    ??? // Returns true if the call to GradientFill succeeded; false
    ??? // otherwise.
    ??? public static bool Fill(
    ??????? Graphics gr,
    ??????? Rectangle rc,
    ??????? Color startColor, Color endColor,
    ??????? FillDirection fillDir)
    ??? {

    ??????? // Initialize the data to be used in the call to GradientFill.
    ??????? Win32Helper.TRIVERTEX[] tva = new Win32Helper.TRIVERTEX[2];
    ??????? tva[0] = new Win32Helper.TRIVERTEX(rc.X, rc.Y, startColor);
    ??????? tva[1] = new Win32Helper.TRIVERTEX(rc.Right, rc.Bottom, endColor);
    ??????? Win32Helper.GRADIENT_RECT[] gra = new Win32Helper.GRADIENT_RECT[] {
    ??? new Win32Helper.GRADIENT_RECT(0, 1)};

    ??????? // Get the hDC from the Graphics object.
    ??????? IntPtr hdc = gr.GetHdc();

    ??????? // PInvoke to GradientFill.
    ??????? bool b;

    ??????? b = Win32Helper.GradientFill(
    ??????????????? hdc,
    ??????????????? tva,
    ??????????????? (uint)tva.Length,
    ??????????????? gra,
    ??????????????? (uint)gra.Length,
    ??????????????? (uint)fillDir);
    ??????? System.Diagnostics.Debug.Assert(b, string.Format(
    ??????????? "GradientFill failed: {0}",
    ??????????? System.Runtime.InteropServices.Marshal.GetLastWin32Error()));

    ??????? // Release the hDC from the Graphics object.
    ??????? gr.ReleaseHdc(hdc);

    ??????? return b;
    ??? }

    ??? // The direction to the GradientFill will follow
    ??? public enum FillDirection
    ??? {
    ??????? //
    ??????? // The fill goes horizontally
    ??????? //
    ??????? LeftToRight = Win32Helper.GRADIENT_FILL_RECT_H,
    ??????? //
    ??????? // The fill goes vertically
    ??????? //
    ??????? TopToBottom = Win32Helper.GRADIENT_FILL_RECT_V
    ??? }
    }

    // Extends the standard button control and performs
    // custom drawing with a GradientFill background.

    public class GradientFilledButton : Control
    {
    ??? private System.ComponentModel.IContainer components = null;

    ??? public GradientFilledButton()
    ??? {
    ??????? components = new System.ComponentModel.Container();
    ??????? this.Font = new Font(this.Font.Name, this.Font.Size, FontStyle.Bold);
    ??? }

    ??? // Controls the direction in which the button is filled.
    ??? public GradientFill.FillDirection FillDirection
    ??? {
    ??????? get
    ??????? {
    ??????????? return fillDirectionValue;
    ??????? }
    ??????? set
    ??????? {
    ??????????? fillDirectionValue = value;
    ??????????? Invalidate();
    ??????? }
    ??? }
    ??? private GradientFill.FillDirection fillDirectionValue;

    ??? // The start color for the GradientFill. This is the color
    ??? // at the left or top of the control depeneding on the value
    ??? // of the FillDirection property.
    ??? public Color StartColor
    ??? {
    ??????? get { return startColorValue; }
    ??????? set
    ??????? {
    ??????????? startColorValue = value;
    ??????????? Invalidate();
    ??????? }
    ??? }
    ??? private Color startColorValue = Color.Red;

    ??? // The end color for the GradientFill. This is the color
    ??? // at the right or bottom of the control depending on the value
    ??? // of the FillDirection property
    ??? public Color EndColor
    ??? {
    ??????? get { return endColorValue; }
    ??????? set
    ??????? {
    ??????????? endColorValue = value;
    ??????????? Invalidate();
    ??????? }
    ??? }
    ??? private Color endColorValue = Color.Blue;

    ??? // This is the offset from the left or top edge
    ??? //? of the button to start the gradient fill.
    ??? public int StartOffset
    ??? {
    ??????? get { return startOffsetValue; }
    ??????? set
    ??????? {
    ??????????? startOffsetValue = value;
    ??????????? Invalidate();
    ??????? }
    ??? }
    ??? private int startOffsetValue;

    ??? // This is the offset from the right or bottom edge
    ??? //? of the button to end the gradient fill.
    ??? public int EndOffset
    ??? {
    ??????? get { return endOffsetValue; }
    ??????? set
    ??????? {
    ??????????? endOffsetValue = value;
    ??????????? Invalidate();
    ??????? }
    ??? }
    ??? private int endOffsetValue;

    ??? // Used to double-buffer our drawing to avoid flicker
    ??? // between painting the background, border, focus-rect
    ??? // and the text of the control.
    ??? private Bitmap DoubleBufferImage
    ??? {
    ??????? get
    ??????? {
    ??????????? if (bmDoubleBuffer == null)
    ??????????????? bmDoubleBuffer = new Bitmap(
    ??????????????????? this.ClientSize.Width,
    ??????????????????? this.ClientSize.Height);
    ??????????? return bmDoubleBuffer;
    ??????? }
    ??????? set
    ??????? {
    ??????????? if (bmDoubleBuffer != null)
    ??????????????? bmDoubleBuffer.Dispose();
    ??????????? bmDoubleBuffer = value;
    ??????? }
    ??? }
    ??? private Bitmap bmDoubleBuffer;

    ??? // Called when the control is resized. When that happens,
    ??? // recreate the bitmap used for double-buffering.
    ??? protected override void OnResize(EventArgs e)
    ??? {
    ??????? DoubleBufferImage = new Bitmap(
    ??????????? this.ClientSize.Width,
    ??????????? this.ClientSize.Height);
    ??????? base.OnResize(e);
    ??? }

    ??? // Called when the control gets focus. Need to repaint
    ??? // the control to ensure the focus rectangle is drawn correctly.
    ??? protected override void OnGotFocus(EventArgs e)
    ??? {
    ??????? base.OnGotFocus(e);
    ??????? this.Invalidate();
    ??? }
    ??? //
    ??? // Called when the control loses focus. Need to repaint
    ??? // the control to ensure the focus rectangle is removed.
    ??? protected override void OnLostFocus(EventArgs e)
    ??? {
    ??????? base.OnLostFocus(e);
    ??????? this.Invalidate();
    ??? }

    ??? protected override void OnMouseMove(MouseEventArgs e)
    ??? {
    ??????? if (this.Capture)
    ??????? {
    ??????????? Point coord = new Point(e.X, e.Y);
    ??????????? if (this.ClientRectangle.Contains(coord) !=
    ??????????????? this.ClientRectangle.Contains(lastCursorCoordinates))
    ??????????? {
    ??????????????? DrawButton(this.ClientRectangle.Contains(coord));
    ??????????? }
    ??????????? lastCursorCoordinates = coord;
    ??????? }
    ??????? base.OnMouseMove(e);
    ??? }

    ??? // The coordinates of the cursor the last time
    ??? // there was a MouseUp or MouseDown message.
    ??? Point lastCursorCoordinates;

    ??? protected override void OnMouseDown(MouseEventArgs e)
    ??? {
    ??????? if (e.Button == MouseButtons.Left)
    ??????? {
    ??????????? // Start capturing the mouse input
    ??????????? this.Capture = true;
    ??????????? // Get the focus because button is clicked.
    ??????????? this.Focus();

    ??????????? // draw the button
    ??????????? DrawButton(true);
    ??????? }

    ??????? base.OnMouseDown(e);
    ??? }

    ??? protected override void OnMouseUp(MouseEventArgs e)
    ??? {
    ??????? this.Capture = false;

    ??????? DrawButton(false);

    ??????? base.OnMouseUp(e);
    ??? }

    ??? bool bGotKeyDown = false;
    ??? protected override void OnKeyDown(KeyEventArgs e)
    ??? {
    ??????? bGotKeyDown = true;
    ??????? switch (e.KeyCode)
    ??????? {
    ??????????? case Keys.Space:
    ??????????? case Keys.Enter:
    ??????????????? DrawButton(true);
    ??????????????? break;
    ??????????? case Keys.Up:
    ??????????? case Keys.Left:
    ??????????????? this.Parent.SelectNextControl(this, false, false, true, true);
    ??????????????? break;
    ??????????? case Keys.Down:
    ??????????? case Keys.Right:
    ??????????????? this.Parent.SelectNextControl(this, true, false, true, true);
    ??????????????? break;
    ??????????? default:
    ??????????????? bGotKeyDown = false;
    ??????????????? base.OnKeyDown(e);
    ??????????????? break;
    ??????? }
    ??? }

    ??? protected override void OnKeyUp(KeyEventArgs e)
    ??? {
    ??????? switch (e.KeyCode)
    ??????? {
    ??????????? case Keys.Space:
    ??????????? case Keys.Enter:
    ??????????????? if (bGotKeyDown)
    ??????????????? {
    ??????????????????? DrawButton(false);
    ??????????????????? OnClick(EventArgs.Empty);
    ??????????????????? bGotKeyDown = false;
    ??????????????? }
    ??????????????? break;
    ??????????? default:
    ??????????????? base.OnKeyUp(e);
    ??????????????? break;
    ??????? }
    ??? }

    ??? // Override this method with no code to avoid flicker.
    ??? protected override void OnPaintBackground(PaintEventArgs e)
    ??? {
    ??? }
    ??? protected override void OnPaint(PaintEventArgs e)
    ??? {
    ??????? DrawButton(e.Graphics, this.Capture &&
    ??????????? (this.ClientRectangle.Contains(lastCursorCoordinates)));
    ??? }

    ??? //
    ??? // Gets a Graphics object for the provided window handle
    ??? //? and then calls DrawButton(Graphics, bool).
    ??? //
    ??? // If pressed is true, the button is drawn
    ??? // in the depressed state.
    ??? void DrawButton(bool pressed)
    ??? {
    ??????? Graphics gr = this.CreateGraphics();
    ??????? DrawButton(gr, pressed);
    ??????? gr.Dispose();
    ??? }

    ??? // Draws the button on the specified Grapics
    ??? // in the specified state.
    ??? //
    ??? // Parameters:
    ??? //? gr - The Graphics object on which to draw the button.
    ??? //? pressed - If true, the button is drawn in the depressed state.
    ??? void DrawButton(Graphics gr, bool pressed)
    ??? {
    ??????? // Get a Graphics object from the background image.
    ??????? Graphics gr2 = Graphics.FromImage(DoubleBufferImage);

    ??????? // Fill solid up until where the gradient fill starts.
    ??????? if (startOffsetValue > 0)
    ??????? {
    ??????????? if (fillDirectionValue ==
    ??????????????? GradientFill.FillDirection.LeftToRight)
    ??????????? {
    ??????????????? gr2.FillRectangle(
    ??????????????????? new SolidBrush(pressed ? EndColor : StartColor),
    ??????????????????? 0, 0, startOffsetValue, Height);
    ??????????? }
    ??????????? else
    ??????????? {
    ??????????????? gr2.FillRectangle(
    ??????????????????? new SolidBrush(pressed ? EndColor : StartColor),
    ??????????????????? 0, 0, Width, startOffsetValue);
    ??????????? }
    ??????? }

    ??????? // Draw the gradient fill.
    ??????? Rectangle rc = this.ClientRectangle;
    ??????? if (fillDirectionValue == GradientFill.FillDirection.LeftToRight)
    ??????? {
    ??????????? rc.X = startOffsetValue;
    ??????????? rc.Width = rc.Width - startOffsetValue - endOffsetValue;
    ??????? }
    ??????? else
    ??????? {
    ??????????? rc.Y = startOffsetValue;
    ??????????? rc.Height = rc.Height - startOffsetValue - endOffsetValue;
    ??????? }
    ??????? GradientFill.Fill(
    ??????????? gr2,
    ??????????? rc,
    ??????????? pressed ? endColorValue : startColorValue,
    ??????????? pressed ? startColorValue : endColorValue,
    ??????????? fillDirectionValue);

    ??????? // Fill solid from the end of the gradient fill
    ??????? // to the edge of the button.
    ??????? if (endOffsetValue > 0)
    ??????? {
    ??????????? if (fillDirectionValue ==
    ??????????????? GradientFill.FillDirection.LeftToRight)
    ??????????? {
    ??????????????? gr2.FillRectangle(
    ??????????????????? new SolidBrush(pressed ? StartColor : EndColor),
    ??????????????????? rc.X + rc.Width, 0, endOffsetValue, Height);
    ??????????? }
    ??????????? else
    ??????????? {
    ??????????????? gr2.FillRectangle(
    ??????????????????? new SolidBrush(pressed ? StartColor : EndColor),
    ??????????????????? 0, rc.Y + rc.Height, Width, endOffsetValue);
    ??????????? }
    ??????? }

    ??????? // Draw the text.
    ??????? StringFormat sf = new StringFormat();
    ??????? sf.Alignment = StringAlignment.Center;
    ??????? sf.LineAlignment = StringAlignment.Center;
    ??????? gr2.DrawString(this.Text, this.Font,
    ??????????? new SolidBrush(this.ForeColor),
    ??????????? this.ClientRectangle, sf);

    ??????? // Draw the border.
    ??????? // Need to shrink the width and height by 1 otherwise
    ??????? // there will be no border on the right or bottom.
    ??????? rc = this.ClientRectangle;
    ??????? rc.Width--;
    ??????? rc.Height--;
    ??????? Pen pen = new Pen(SystemColors.WindowFrame);

    ??????? gr2.DrawRectangle(pen, rc);

    ??????? // Draw from the background image onto the screen.
    ??????? gr.DrawImage(DoubleBufferImage, 0, 0);
    ??????? gr2.Dispose();
    ??? }

    ??? protected override void Dispose(bool disposing)
    ??? {
    ??????? if (disposing && (components != null))
    ??????? {
    ??????????? components.Dispose();
    ??????? }
    ??????? base.Dispose(disposing);
    ??? }

    }

?

  1. 第三步:Add the Win32Helper class to your project, which contains the platform invoke and structures for native code interoperability.

    ?

  2. ?

  3. public sealed class Win32Helper
    {public struct TRIVERTEX{public int x;public int y;public ushort Red;public ushort Green;public ushort Blue;public ushort Alpha;public TRIVERTEX(int x, int y, Color color): this(x, y, color.R, color.G, color.B, color.A){}public TRIVERTEX(int x, int y,ushort red, ushort green, ushort blue,ushort alpha){this.x = x;this.y = y;this.Red = (ushort)(red << 8);this.Green = (ushort)(green << 8);this.Blue = (ushort)(blue << 8);this.Alpha = (ushort)(alpha << 8);}}public struct GRADIENT_RECT{public uint UpperLeft;public uint LowerRight;public GRADIENT_RECT(uint ul, uint lr){this.UpperLeft = ul;this.LowerRight = lr;}}[DllImport("coredll.dll", SetLastError = true, EntryPoint = "GradientFill")]public extern static bool GradientFill(IntPtr hdc,TRIVERTEX[] pVertex,uint dwNumVertex,GRADIENT_RECT[] pMesh,uint dwNumMesh,uint dwMode);public const int GRADIENT_FILL_RECT_H = 0x00000000;public const int GRADIENT_FILL_RECT_V = 0x00000001;}
    

    ?

  4. ?

  5. ?

  6. ?

  7. ?

  8. 第四步:Declare a form variable named gfButton of type GradientFilledButton.

  9. private GradientFilledButton gfButton;
    
第五步:Add the following code, which initializes the gradient filled button custom control, to the constructor of the Form1 class. This code should follow the call to the InitializeComponent method. You can specify the start and ending colors of the gradient fill and either a TopToBottom or LeftToRight fill direction. 
  1. InitializeComponent();
    this.gfButton = new GradientFilledButton();
    this.gfButton.Location = new System.Drawing.Point(71, 24);
    this.gfButton.Name = "gfButton";
    this.gfButton.Size = new System.Drawing.Size(100, 23);
    this.gfButton.TabIndex = 1;
    this.gfButton.Text = "Button Test";
    this.gfButton.Click += new System.EventHandler(this.gfButton_Click);// Select desired start color, end color, and fill direction.
    this.gfButton.StartColor = System.Drawing.Color.SlateBlue;
    this.gfButton.EndColor = System.Drawing.Color.LightCyan;
    gfButton.FillDirection = GradientFill.FillDirection.LeftToRight;this.Controls.Add(gfButton);
    

    ?

  2. ?

  3. 第六步:Add the event handling code for the button's Click event to form.

    void gfButton_Click(object sender, System.EventArgs e)
    {Control control = sender as Control;System.Diagnostics.Debug.Assert(control != null);MessageBox.Show("Clicked", "Click event handler");
    }
    

第七步:Override the OnPaint method to paint the background of the form with a gradient fill pattern. This code uses the GradientFill class but not the GradientFilledButton class.

?

protected override void OnPaintBackground(PaintEventArgs e)
{
??? // On Windows Mobile Pocket PC 2003, the call to GradientFill
??? // fails with GetLastError() returning 87 (ERROR_INVALID_PARAMETER)
??? // when e.Graphics is used.
??? // Instead, fill into a bitmap and then draw that onto e.Graphics.
??? Bitmap bm = new Bitmap(Width, Height);
??? Graphics gr = System.Drawing.Graphics.FromImage(bm);

??? GradientFill.Fill(
??????? gr,
??????? this.ClientRectangle,
??????? Color.LightCyan, Color.SlateBlue,
??????? GradientFill.FillDirection.TopToBottom);
??? e.Graphics.DrawImage(bm, 0, 0);
??? gr.Dispose();
??? bm.Dispose();
}

?

第八步:Build and deploy the application.


?

轉載于:https://www.cnblogs.com/xyzlmn/archive/2009/09/29/3168371.html

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

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

相關文章

能在任意一種框架中復用的組件,太牛了!

Web Component 是一種 W3C標準支持的組件化方案&#xff0c;通過它可以編寫可復用的組件&#xff0c;同時也可以對自己的組件做更精細化的控制。更牛的是&#xff0c;Web Component 可以在任何一種框架中使用&#xff0c;不用加載任何模塊、代碼量小&#xff0c;優勢非常明顯&a…

stm32cubemx中文_用 STM32 通用定時器做微秒延時函數(STM32CubeMX版本)

概述? 在使用 DHT11 的時候&#xff0c;時序通信需要微秒來操作&#xff0c;STM32CubeMX 自帶一個系統時鐘&#xff0c;但是實現的是毫秒級別的。因此就自己用通用計時器實現一個。文章目錄環境&#xff1a;開發板&#xff1a;STM32F4探索者&#xff08;正點原子&#xff09;1…

MySQL索引類型一覽 讓MySQL高效運行起來

轉載鏈接&#xff1a;http://database.51cto.com/art/200910/156685.htm 索引是快速搜索的關鍵。MySQL索引的建立對于MySQL的高效運行是很重要的。下面介紹幾種常見的MySQL索引類型。 在數據庫表中&#xff0c;對字段建立索引可以大大提高查詢速度。假如我們創建了一個 mytabl…

431.chapter2.configure database mail

SQL Database Mail SQL 2005數據庫郵件是一種通過 Microsoft SQL Server 2005 Database Engine 發送電子郵件的企業解決方案。通過使用數據庫郵件&#xff0c;數據庫應用程序可以向用戶發送電子郵件。郵件中可以包含查詢結果&#xff0c;還可以包含來自網絡中任何資源的文件。數…

人臉識別拷勤門禁主板_捷易講解AI無感人臉識別考勤門禁終端設備在使用中的維護方法...

人臉識別考勤門禁終端設備雖然在出廠時&#xff0c;都有做密封處理&#xff0c;但面對細小的灰塵&#xff0c;并沒有做到百分百防塵。灰塵對于AI無感人臉識別考勤門禁終端設備是有一定的影響的&#xff0c;他會沉淀在主板上、屏幕上&#xff0c;影響設備散熱和正常工作&#xf…

【翻譯】How-To: Using the N* Stack, part 3

原文地址&#xff1a;http://jasondentler.com/blog/2009/08/how-to-using-the-n-stack-part-3/ Java – 一種代碼松散的XML 在我們學習 Fluent NHibernate 之前, 應該先了解下老式的 NHibernate 映射文件應該是怎樣寫的。 在一個典型的 NHibernate 配置中&#xff0c;你會有很…

你可能需要的網易前端三輪面經

關注若川視野, 回復"pdf" 領取資料&#xff0c;回復"加群"&#xff0c;可加群長期交流前言最近一個星期面了幾家公司&#xff0c;最后收獲了心儀的網易有道offer&#xff0c;于是推掉了其他的面試&#xff0c;至于一些其他大廠&#xff0c;并沒有投簡歷&am…

PHP yii 框架源碼閱讀(一)

轉載鏈接&#xff1a;http://www.th7.cn/Program/php/2012/04/03/67983.shtml 目錄文件 |- framework 框架核心庫 |-|- base 底層類庫文件夾&#xff0c;包 含CApplication(應用類&#xff0c;負責全局的用戶請求處理&#xff0c;它管理的應用組件集&#xff0c;將提供特定功…

復習.net/c#時的小文章之萬年草稿版 (全是基礎概念,請懂的人繞行)

必讀文&#xff1a;61條面向對象設計的經驗原則&#xff08;體會篇&#xff09; C#知識點集合 (面試必備)一、顯式(explicit)轉換和隱式(implicit)轉換的一般概念int i 100; Response.Write(i); // 這就是隱式 Response.Write(i.ToString()); // 這就是顯式 一般來講&#xff…

timertask run函數未執行_圖執行模式下的 TensorFlow 2

文 / 李錫涵&#xff0c;Google Developers Expert本文節選自《簡單粗暴 TensorFlow 2.0》盡管 TensorFlow 2 建議以即時執行模式(Eager Execution)作為主要執行模式&#xff0c;然而&#xff0c;圖執行模式(Graph Execution)作為 TensorFlow 2 之前的主要執行模式&#xff0c…

AJAX自學筆記01

從今天開始正式系統學習asp.net ajax了。XMLHttpRequest對象屬性&#xff1a;Number readyState (返回值4表示完成)Function onreadystatechange (執行回調函數)string responseText &#xff08;返回字符串型&#xff09;XMLDocument responseXML&#xff08;返回XML型&#x…

如何從 0 到 1 打造團隊 PC/H5 構建工具

關注若川視野, 回復"pdf" 領取資料&#xff0c;回復"加群"&#xff0c;可加群長期交流學習一、前言 大家好&#xff0c;我叫鰻魚&#xff0c;這次分享的主題是如何從 0 到 1 打造適合自己的構建部署方案。image.png先例行的自我介紹&#xff0c;大概 14 年…

PHP yii 框架源碼閱讀(二) - 整體執行流程分析

轉載鏈接&#xff1a;http://tech.ddvip.com/2013-11/1384432766205970.html 一 程序入口 <?php// change the following paths if necessary $yiidirname(__FILE__)./http://www.cnblogs.com/framework/yii.php; $configdirname(__FILE__)./protected/config/main.php;/…

HTTP狀態碼大全

完整的 HTTP 1.1規范說明書來自于RFC 2616&#xff0c;你可以在http://www.talentdigger.cn/home/link.php?urld3d3LnJmYy1lZGl0b3Iub3JnLw%3D%3D在線查閱。HTTP 1.1的狀態碼被標記為新特性&#xff0c;因為許多瀏覽器只支持 HTTP 1.0。你應只把狀態碼發送給支持 HTTP 1.1的客…

testng接口自動化測試_Java+Maven+TestNG接口(API)自動化測試教程(10) 使用 Jenkins 構建自動化測試持續集成...

現在代碼可以運行了&#xff0c;但是每次運行都需要我們手工去執行&#xff0c;并且測試報告也只能在執行測試的電腦上才能看到&#xff0c;我們希望能夠定時自動執行測試&#xff0c;并且能夠做到自動發送測試報告到相關人員的電子郵箱中。Jenkins 正好可以很好的完成以上訴求…

sql數據類型詳解

BCD碼1字符1/2字節 ASC碼1字符1字節 GB2312碼1字符2字節 BIG5碼1字符5字節 (1)二進制數據類型 二進制數據包括 Binary、Varbinary 和 Image  Binary 數據類型既可以是固定長度的(Binary),也可以是變長度的。  Binary[(n)] 是 n 位固定的二進制數據。其中&#xff0c;n 的取…

論公眾號內卷

關注若川視野, 回復"pdf" 領取資料&#xff0c;回復"加群"&#xff0c;可加群長期交流學習曾幾何時公眾號文章的標題單純且沒有套路七年前的我就是這樣僅僅把公眾號當做一個寫文章的博客平臺甚至是像有道云一樣的在線筆記平臺當時的標題是這樣子滴《hashma…

PHP 利用Mail_MimeDecode類提取郵件信息

轉載鏈接:http://blog.csdn.net/laijingyao881201/article/details/5512693 重點為one_mail函數。利用Mail_mimeDecode類從郵件中提取郵件頭和郵件正文。 <?php header("content-type:text/html; charsetUTF-8"); /** record kid words and insert into databa…

【轉】概要設計說明書

概要設計說明書 一&#xff0e; 引言 1&#xff0e; 編寫目的 從該階段開發正式進入軟件的實際開發階段&#xff0c;本階段完成系統的大致設計并明確系統的數據結構與軟件結構。在軟件設計階段主要是把一個軟件需求轉化為軟件表示的過程&#xff0c;這種表示只是描繪出軟件的…

程序異常異常代碼: 0xc0000005_Java基礎:看完這篇你還怕碰到異常嗎?

前言在日常的開發以及平時的學習練習中&#xff0c;異常相信對于大家來講并不陌生&#xff0c;但是對于異常的具體使用、底層實現以及分類等等可能并不是很了解。今天我就抽出了一點時間系統的整理了異常的各個知識點&#xff0c;希望能夠幫助到大家對于Java 異常的理解與學習。…