Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Cách xoay 1 lableControl C# 90,180 độ như thế nào?

  1. #1
    Ngày gia nhập
    02 2012
    Bài viết
    6

    Mặc định Cách xoay 1 lableControl C# 90,180 độ như thế nào?

    Các bạn cho mình hỏi làm thế nào xoay được lable 1 góc tùy ý nhỉ,mình nghỉ có hàm xoay mà tìm k ra ,bạn nào có demo cụ thể chỉ mình với.Thanks các bạn

  2. #2
    Ngày gia nhập
    11 2008
    Bài viết
    218

    Bạn thử cách này xem có được không nhé:
    -Bước 1: bạn tạo 1 winform project mới;
    -Bước 2: add class mới với tên là VerticalLabel, nội dung như sau:
    Visual C# Code:
    1. using System;
    2. using System.ComponentModel;
    3. using System.Drawing;
    4. using System.Windows.Forms;
    5.  
    6. namespace CustomControls
    7. {
    8.     /// <summary>
    9.     /// A custom windows control to display text vertically
    10.     /// </summary>
    11.     [ToolboxBitmap(typeof(VerticalLabel), "VerticalLabel.ico")]
    12.     public class VerticalLabel : System.Windows.Forms.Control
    13.     {
    14.         private string labelText;
    15.         private DrawMode _dm = DrawMode.BottomUp;
    16.         private bool _transparentBG = false;
    17.         System.Drawing.Text.TextRenderingHint _renderMode = System.Drawing.Text.TextRenderingHint.SystemDefault;
    18.  
    19.         private System.ComponentModel.Container components = new System.ComponentModel.Container();
    20.  
    21.         /// <summary>
    22.         /// VerticalLabel constructor
    23.         /// </summary>
    24.         public VerticalLabel()
    25.         {
    26.             base.CreateControl();
    27.             InitializeComponent();
    28.             SetStyle(System.Windows.Forms.ControlStyles.Opaque, true);
    29.         }
    30.  
    31.         /// <summary>
    32.         /// Dispose override method
    33.         /// </summary>
    34.         /// <param name="disposing">boolean parameter</param>
    35.         protected override void Dispose(bool disposing)
    36.         {
    37.             if (disposing)
    38.             {
    39.                 if (!((components == null)))
    40.                 {
    41.                     components.Dispose();
    42.                 }
    43.             }
    44.             base.Dispose(disposing);
    45.         }
    46.  
    47.         [System.Diagnostics.DebuggerStepThrough()]
    48.         private void InitializeComponent()
    49.         {
    50.             this.Size = new System.Drawing.Size(24, 100);
    51.         }
    52.  
    53.         /// <summary>
    54.         /// OnPaint override. This is where the text is rendered vertically.
    55.         /// </summary>
    56.         /// <param name="e">PaintEventArgs</param>
    57.         protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
    58.         {
    59.             float vlblControlWidth;
    60.             float vlblControlHeight;
    61.             float vlblTransformX;
    62.             float vlblTransformY;
    63.  
    64.             Color controlBackColor = BackColor;
    65.             Pen labelBorderPen;
    66.             SolidBrush labelBackColorBrush;
    67.  
    68.             if (_transparentBG)
    69.             {
    70.                 labelBorderPen = new Pen(Color.Empty, 0);
    71.                 labelBackColorBrush = new SolidBrush(Color.Empty);
    72.             }
    73.             else
    74.             {
    75.                 labelBorderPen = new Pen(controlBackColor, 0);
    76.                 labelBackColorBrush = new SolidBrush(controlBackColor);
    77.             }
    78.  
    79.             SolidBrush labelForeColorBrush = new SolidBrush(base.ForeColor);
    80.             base.OnPaint(e);
    81.             vlblControlWidth = this.Size.Width;
    82.             vlblControlHeight = this.Size.Height;
    83.             e.Graphics.DrawRectangle(labelBorderPen, 0, 0, vlblControlWidth, vlblControlHeight);
    84.             e.Graphics.FillRectangle(labelBackColorBrush, 0, 0, vlblControlWidth, vlblControlHeight);
    85.             e.Graphics.TextRenderingHint = this._renderMode;
    86.             e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    87.  
    88.             if (this.TextDrawMode == DrawMode.BottomUp)
    89.             {
    90.                 vlblTransformX = 0;
    91.                 vlblTransformY = vlblControlHeight;
    92.                 e.Graphics.TranslateTransform(vlblTransformX, vlblTransformY);
    93.                 e.Graphics.RotateTransform(270);
    94.                 e.Graphics.DrawString(labelText, Font, labelForeColorBrush, 0, 0);
    95.             }
    96.             else
    97.             {
    98.                 vlblTransformX = vlblControlWidth;
    99.                 vlblTransformY = vlblControlHeight;
    100.                 e.Graphics.TranslateTransform(vlblControlWidth, 0);
    101.                 e.Graphics.RotateTransform(90);
    102.                 e.Graphics.DrawString(labelText, Font, labelForeColorBrush, 0, 0, StringFormat.GenericTypographic);
    103.             }
    104.         }
    105.         /// <summary>
    106.         ///
    107.         /// </summary>
    108.         protected override CreateParams CreateParams//v1.10
    109.         {
    110.             get
    111.             {
    112.                 CreateParams cp = base.CreateParams;
    113.                 cp.ExStyle |= 0x20;  // Turn on WS_EX_TRANSPARENT
    114.                 return cp;
    115.             }
    116.         }
    117.  
    118.         private void VerticalTextBox_Resize(object sender, System.EventArgs e)
    119.         {
    120.             Invalidate();
    121.         }
    122.         /// <summary>
    123.         /// Graphics rendering mode. Supprot for antialiasing.
    124.         /// </summary>
    125.         [Category("Properties"), Description("Rendering mode.")]
    126.         public System.Drawing.Text.TextRenderingHint RenderingMode
    127.         {
    128.             get { return _renderMode; }
    129.             set { _renderMode = value; }
    130.         }
    131.         /// <summary>
    132.         /// The text to be displayed in the control
    133.         /// </summary>
    134.         [Category("VerticalLabel"), Description("Text is displayed vertically in container.")]
    135.         public override string Text
    136.         {
    137.             get
    138.             {
    139.                 return labelText;
    140.             }
    141.             set
    142.             {
    143.                 labelText = value;
    144.                 Invalidate();
    145.             }
    146.         }
    147.         /// <summary>
    148.         ///
    149.         /// </summary>
    150.         [Category("Properties"), Description("Whether the text will be drawn from Bottom or from Top.")]
    151.         public DrawMode TextDrawMode
    152.         {
    153.             get { return _dm; }
    154.             set { _dm = value; }
    155.         }
    156.         [Category("Properties"), Description("Whether the text will be drawn with transparent background or not.")]
    157.         public bool TransparentBackground
    158.         {
    159.             get { return _transparentBG; }
    160.             set { _transparentBG = value; }
    161.         }
    162.     }
    163.     /// <summary>
    164.     /// Text Drawing Mode
    165.     /// </summary>
    166.     public enum DrawMode
    167.     {
    168.         /// <summary>
    169.         /// Text is drawn from bottom - up
    170.         /// </summary>
    171.         BottomUp = 1,
    172.         /// <summary>
    173.         /// Text is drawn from top to bottom
    174.         /// </summary>
    175.         TopBottom
    176.     }
    177. }

    sau khi built, trong toolbox sẽ có item mới là VerticalLabel.

Các đề tài tương tự

  1. In Crystal report xoay ngang như thế nào?
    Gửi bởi violent_feeling trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 07-06-2013, 12:11 AM
  2. Cây lau nhà 360 Spin Mop and Go - giảm giá cây lau nhà vừa xoay tay vừa đạp chân thật tiện dụn
    Gửi bởi docavn01 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 2
    Bài viết cuối: 19-03-2013, 04:23 PM
  3. Bài tập C Làm thế nào để xoay câu 1 góc 90% ?
    Gửi bởi SIDA trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 03-05-2011, 08:34 PM
  4. C# làm circularProgress trong DotNetBar xoay như thế nào ?
    Gửi bởi qhhqnavy trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 27-04-2011, 07:14 PM
  5. Dịch xuống xoay vòng ma trận,mình làm thế nào vậy
    Gửi bởi prince7seas trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 02-01-2009, 01:27 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn