Гайд C# .NET оформление Читов/лаунчеров (пример рендера)

Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
Этим летом, прописал для друга класс, для рисовки ГУИ лаунчера на шарпе.
Мне он не нужен по этому сливаю.​

Код:
///Copyright © System Bot 2017
///Developer - iDReeM

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;


public class RenderAttribute : Attribute
{
    /// <summary>
    /// name of
    /// </summary>
    public string Name { get; set; }
    /// <summary>
    /// description
    /// </summary>
    public string Code { get; set; }
    /// <summary>
    /// null init
    /// </summary>
    public RenderAttribute() { }
    /// <summary>
    /// init attribute
    /// </summary>
    /// <param name="name">name of</param>
    public RenderAttribute(string name) { Name = name; }
    /// <summary>
    /// init attribute
    /// </summary>
    /// <param name="name">name of</param>
    /// <param name="code">description</param>
    public RenderAttribute(string name, string code)
    {
        Name = name;
        Code = code;
    }
    /// <summary>
    /// finalize objects
    /// </summary>
    ~RenderAttribute() { }
}
public class CRender
{
    /// <summary>
    /// Variable device
    /// </summary>
    [Render(Name = "m_pDevice", Code = "Graphics device")]
    private readonly Graphics m_pDevice;
    /// <summary>
    /// init class CRender
    /// </summary>
    /// <param name="pDevice"></param>
    public CRender(Graphics pDevice)
    {
        this.m_pDevice = pDevice;
        this.m_pDevice.SmoothingMode = SmoothingMode.AntiAlias;
        this.m_pDevice.TextRenderingHint = TextRenderingHint.AntiAlias;
    }
    /// <summary>
    /// return Device
    /// </summary>
    [Render(Name = "Device", Code = "Graphics device public")]
    public Graphics Device
    {
        get
        {
            return this.m_pDevice;
        }
    }
    /// <summary>
    /// check Graphics device
    /// </summary>
    /// <returns>true - draw, false - device is empty</returns>
    [Render(Name = "DeviceEqualsNull", Code = "Equals")]
    public bool DeviceEqualsNull()
    {
        return this.m_pDevice.Equals(default(Graphics));
    }
    /// <summary>
    /// drawing box
    /// </summary>
    /// <param name="color">color border</param>
    /// <param name="x">x pos</param>
    /// <param name="y">y pos</param>
    /// <param name="w">width</param>
    /// <param name="h">height</param>
    [Render(Name = "render_Box", Code = "Draw")]
    public void render_Box(Color color, int x, int y, int w, int h)
    {
        try
        {
            this.m_pDevice.FillRectangle(new SolidBrush(color), new Rectangle(new Point(x, y), new Size(w, h)));
        }
        catch (System.ArgumentNullException ex)
        {
            throw ex;//не указан цвет
        }
    }
    /// <summary>
    /// drawing box float coord
    /// </summary>
    /// <param name="color">color border</param>
    /// <param name="x">x pos</param>
    /// <param name="y">y pos</param>
    /// <param name="w">width</param>
    /// <param name="h">height</param>
    [Render(Name = "render_Box", Code = "Draw")]
    public void render_Box(Color color, float x, float y, float w, float h)
    {
        try
        {
            this.m_pDevice.FillRectangle(new SolidBrush(color), new RectangleF(new PointF(x, y), new SizeF(w, h)));
        }
        catch (System.ArgumentNullException ex)
        {
            throw ex;
        }
    }
    /// <summary>
    /// drawing border
    /// </summary>
    /// <param name="color">color border</param>
    /// <param name="x">x pos</param>
    /// <param name="y">y pos</param>
    /// <param name="w">width</param>
    /// <param name="h">height</param>
    [Render(Name = "render_Border", Code = "Draw")]
    public void render_Border(Color color, int x, int y, int w, int h)
    {
        try
        {
            this.m_pDevice.DrawRectangle(new Pen(new SolidBrush(color)), new Rectangle(new Point(x, y), new Size(w, h)));
        }
        catch (System.ArgumentNullException ex)
        {
            throw ex;
        }
    }
    /// <summary>
    /// drawing border float coord
    /// </summary>
    /// <param name="color">color border</param>
    /// <param name="x">x pos</param>
    /// <param name="y">y pos</param>
    /// <param name="w">width</param>
    /// <param name="h">height</param>
    [Render(Name = "render_Border", Code = "Draw")]
    public void render_Border(Color color, float x, float y, float w, float h)
    {
        try
        {
            this.m_pDevice.DrawRectangle(new Pen(new SolidBrush(color)), x, y, w, h);
        }
        catch (System.ArgumentNullException ex)
        {
            throw ex;
        }
    }
    /// <summary>
    /// drawing gradient box
    /// </summary>
    /// <param name="color1">color start gradient</param>
    /// <param name="color2">color end gradient</param>
    /// <param name="GMode">gradient mode</param>
    /// <param name="x">x pos</param>
    /// <param name="y">y pos</param>
    /// <param name="w">width</param>
    /// <param name="h">height</param>
    [Render(Name = "render_GradientBox", Code = "Draw")]
    public void render_GradientBox(Color color1, Color color2, LinearGradientMode GMode, int x, int y, int w, int h)
    {
        LinearGradientBrush linGrBrush = new LinearGradientBrush(new Rectangle(new Point(x, y), new Size(w, h)), color1, color2, GMode);
        try
        {
            this.m_pDevice.FillRectangle(linGrBrush, new Rectangle(new Point(x, y), new Size(w, h)));
            linGrBrush.Dispose();
        }
        catch (System.ArgumentNullException ex)
        {
            throw ex;
        }
    }
    /// <summary>
    /// drawing gradient border
    /// </summary>
    /// <param name="color1">color start gradient</param>
    /// <param name="color2">color end gradient</param>
    /// <param name="GMode">gradient mode</param>
    /// <param name="x">x pos</param>
    /// <param name="y">y pos</param>
    /// <param name="w">width</param>
    /// <param name="h">height</param>
    [Render(Name = "render_GradientBorder", Code = "Draw")]
    public void render_GradientBorder(Color color1, Color color2, LinearGradientMode GMode, int x, int y, int w, int h)
    {
        LinearGradientBrush linGrBrush = new LinearGradientBrush(new Rectangle(new Point(x, y), new Size(w, h)), color1, color2, GMode);
        try
        {
            this.m_pDevice.DrawRectangle(new Pen(linGrBrush), new Rectangle(new Point(x, y), new Size(w, h)));
            linGrBrush.Dispose();
        }
        catch (System.ArgumentNullException ex)
        {
            throw ex;
        }
    }
    /// <summary>
    /// drawing string
    /// </summary>
    /// <param name="str">string to draw</param>
    /// <param name="color">color text</param>
    /// <param name="x">x pos</param>
    /// <param name="y">y pos</param>
    /// <param name="myFont"> font</param>
    /// /// <param name="format"> format string DT_LEFT/CENTR</param>
    [Render(Name = "render_String", Code = "Draw")]
    public void render_String(string str, Color color, int x, int y, Font myFont, StringFormat format)
    {
        try
        {
            this.m_pDevice.DrawString(str, myFont, new SolidBrush(color), new Point(x, y), format);
        }
        catch (System.ArgumentNullException ex)
        {
            throw ex;
        }
    }
    /// <summary>
    /// drawing string
    /// </summary>
    /// <param name="str">string to draw</param>
    /// <param name="color">color text</param>
    /// <param name="x">x pos</param>
    /// <param name="y">y pos</param>
    /// <param name="myFont"> font</param>
    [Render(Name = "render_String", Code = "Draw")]
    public void render_String(string str, Color color, int x, int y, Font myFont)
    {
        try
        {
            this.m_pDevice.DrawString(str, myFont, new SolidBrush(color), new Point(x, y));
        }
        catch (System.ArgumentNullException ex)
        {
            throw ex;
        }
    }
    /// <summary>
    /// drawing gradient string
    /// </summary>
    /// <param name="str">string to draw</param>
    /// <param name="color1">color start gradient</param>
    /// <param name="color2">color end gradient</param>
    /// <param name="GMode">gradient mode</param>
    /// <param name="x">x pos</param>
    /// <param name="y">y pos</param>
    /// <param name="myFont"> font</param>
    [Render(Name = "render_GradientString", Code = "Draw")]
    public void render_GradientString(string str, Color color1, Color color2, LinearGradientMode GMode, int x, int y, Font myFont)
    {
        LinearGradientBrush linGrBrush = new LinearGradientBrush(new RectangleF(new PointF(x, y), new SizeF(myFont.Size, myFont.Size)), color1, color2, GMode);
        try
        {
            this.m_pDevice.DrawString(str, myFont, linGrBrush, new Point(x, y));
            linGrBrush.Dispose();
        }
        catch (System.ArgumentNullException ex)
        {
            throw ex;
        }
    }
    /// <summary>
    /// drawing gradient string
    /// </summary>
    /// <param name="str">string to draw</param>
    /// <param name="color1">color start gradient</param>
    /// <param name="color2">color end gradient</param>
    /// <param name="GMode">gradient mode</param>
    /// <param name="x">x pos</param>
    /// <param name="y">y pos</param>
    /// <param name="myFont"> font</param>
    [Render(Name = "render_GradientString", Code = "Draw")]
    public void render_GradientString(string str, Color color1, Color color2, LinearGradientMode GMode, int x, int y, Font myFont, StringFormat format)
    {
        LinearGradientBrush linGrBrush = new LinearGradientBrush(new RectangleF(new PointF(x, y), new SizeF(myFont.Size, myFont.Size)), color1, color2, GMode);
        try
        {
            this.m_pDevice.DrawString(str, myFont, linGrBrush, new Point(x, y), format);
        }
        catch (System.ArgumentNullException ex)
        {
            throw ex;
        }
        finally
        {
            linGrBrush.Dispose();
        }
    }
   /// <summary>
   /// drawing image
   /// </summary>
   /// <param name="b">Картинка</param>
   /// <param name="x">x</param>
   /// <param name="y">y</param>
    [Render(Name = "render_ImageUnscaled", Code = "Draw")]
    public void render_ImageUnscaled(Bitmap b, int x, int y)
    {
        try
        {
            this.m_pDevice.DrawImageUnscaled(b, new Rectangle(new Point(x, y), b.Size));
        }
        catch (System.ArgumentNullException ex)
        {
            throw ex;
        }
        finally
        {
            b.Dispose();
        }
    }
    ~CRender()
    {
        //finalize
    }
}
Атрибуты припаял для себя, по ним я чекал функции для протекции приложения в SEGuard (мой самописный пакер).
Код:
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;


public class GUIButton : RadioButton
{
    public GUIButton()
    {
        this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
        base.Appearance = Appearance.Button;
        base.FlatStyle = FlatStyle.Flat;
        base.FlatAppearance.BorderSize = 0;
    }
   
    CRender pRenderContext;
   
    Color colorBox1 = Color.FromArgb(129, 37, 46, 62);
   
    Color colorBox2 = Color.FromArgb(69, 37, 46, 62);
   
    protected override void OnMouseMove(MouseEventArgs mevent)
    {
        base.OnMouseMove(mevent);
        this.colorBox1 = base.Checked ? Color.FromArgb(69, 124, 138, 151) : Color.FromArgb(255, 37, 46, 62);
    }
   
    protected override void OnMouseLeave(EventArgs eventargs)
    {
        base.OnMouseLeave(eventargs);
        this.colorBox1 = base.Checked ? Color.FromArgb(255, 37, 46, 62) : Color.FromArgb(129, 37, 46, 62);

    }
   
    protected override void OnCheckedChanged(EventArgs e)
    {
        base.OnCheckedChanged(e);

        this.colorBox2 = base.Checked ? Color.FromArgb(69, 134, 148, 161) : Color.FromArgb(69, 37, 46, 62);
        this.colorBox1 = base.Checked ? Color.FromArgb(255, 37, 46, 62) : Color.FromArgb(69, 37, 46, 62);
    }
   
    protected override void OnMouseDown(MouseEventArgs e)
    {
        base.OnMouseDown(e);

        Refresh();
        Invalidate();
    }
   
    protected override void OnMouseUp(MouseEventArgs e)
    {
        base.OnMouseUp(e);
        Invalidate();
    }
   
    protected override void OnPaint(PaintEventArgs pevent)
    {
        base.OnPaint(pevent);

        this.pRenderContext = new CRender(pevent.Graphics);

        if (!this.pRenderContext.DeviceEqualsNull())
        {
            this.pRenderContext.Device.Clear(Parent.BackColor);
            this.pRenderContext.render_GradientBox(colorBox1, colorBox2, LinearGradientMode.Horizontal, 0, 0, base.Width, base.Height);
            this.pRenderContext.render_String(base.Text, Color.White, base.Width / 2, base.Height / 2, base.Font, new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
            if (base.Image != null)
            {
                this.pRenderContext.render_ImageUnscaled(new Bitmap(base.Image), 6, 4);
            }
        }
    }
    ~GUIButton()
    {

    }
}
Вид:
 
Последнее редактирование:
sex
Забаненный
Статус
Оффлайн
Регистрация
4 Окт 2017
Сообщения
1,073
Реакции[?]
160
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
это в игре самой,или я просто тупой чёт?
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
Сверху Снизу