Entwickler-Ecke
Multimedia / Grafik - C# Projekt anders gestalten....
tomycat - Mi 23.08.17 15:59
Titel: C# Projekt anders gestalten....
hallo,
ich habe da ein Mega Projekt hinter mir.
Jetzt möchte ich gerne, am Besten Button klick, dass sich alle Button z.b. alle Kanten abgerundet sind und eine dicke Umrandung haben.
Soooooo ungefähr wie Norton oder Antivr soll mein Projekt am Ende aussehen.
Ich weis nicht wo ich ansetzen soll? Nach was googlet man am besten? Hat jemand eine Tut Seite?
Delete - Mi 23.08.17 16:33
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen - Mi 23.08.17 21:00
Simpelste Lösung wäre etwa so.
https://stackoverflow.com/questions/28486521/rounded-edges-in-button-c-sharp-winforms
Sei dir bewusst das so aber einfach nur die Ecken abgeschnitten werden. Wenn du was wirklich schönes willst musst du arbeit investieren und das zeichnen komplett selbst übernehmen und nicht nur ein wenig an den Ecken feilen. Wenn du nicht den Standardlook willst gilt eigentlich fast immer komplett selber zeichnen. Den StandardLook mit einem kleinen Twist gibt es eher nicht. Winforms(und die dahinterliegenden Common Controls) sind für einen einheitlichen systemweiten Look ausgelegt die dem Themeing des OS unterliegen.
Delete - Do 24.08.17 08:56
- Nachträglich durch die Entwickler-Ecke gelöscht -
doublecross - Fr 25.08.17 13:06
Hi,
also ich würde bei dem Thema auf eine WPF Oberfläche setzen. Diese wird ohnehin immer komplett unabhängig von den echten Windows Controls gezeichnet und die Definitonen wie dies zu geschehen hat können beliebig geändert werden. In einem Buch habe ich mal gesehen, das der Autor Sternförmige Button definierte, ich weiß aber nicht mehr welches es war.
Ein Beispiel für einen abgerundeten Button das ich auf die schnelle
ergoogled [
https://social.msdn.microsoft.com/Forums/en-US/511f354d-8cc6-4149-8b3a-e7084eb71db7/button-with-rounded-corners?forum=wpf] habe wäre:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| <Button x:Name="btnBack" Grid.Row="2" Width="300" Click="btnBack_Click"> <Button.Template> <ControlTemplate> <Border CornerRadius="10" Background="#463190"> <TextBlock Text="Retry" Foreground="White" HorizontalAlignment="Center" Margin="0,5,0,0" Height="40" FontSize="20"></TextBlock> </Border> </ControlTemplate> </Button.Template> </Button> |
Chiyoko - Sa 26.08.17 23:48
Wenn deine Anwendung einen bestimmten Stil bekommen soll, könntest du auch Grafiken benutzen und den Transparency Key setzen.
Das ginge selbst dann, wenn die Buttons undefinierte Größen haben (z.b. mit Frames).
Beispiel:
[
https://www.imagebanana.com/s/797/OcaxAbin.html]
Zu WPF würde ich auch tendieren, sofern man sich damit anfreunden mag.
tomycat - Do 31.08.17 19:37
thx, deine Antwort schmeckt mir am besten. :-)
ich habe ein bischen herumgegoogelt, kann mich mir ein Beispiel machen mit Graphics.DrawRectangle() oder mir ein link mit einenm Tut posten?
Delete - Fr 01.09.17 04:26
- Nachträglich durch die Entwickler-Ecke gelöscht -
tomycat - Sa 02.09.17 19:55
@Frühlingsrolle
ich studiere gerade deinen Quellcode, ca.90 % ist er mir klar, will aber die 100 % ereichen. :-)
Was mache ich mit buttonEx1, die sind rot ?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;
namespace WindowsFormsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent();
} public class ButtonEx : Button { private byte _cornerRadian = 0;
private Rectangle _rect = new Rectangle(); private Color _rectColor = SystemColors.Control; private byte _rectWidth = 0; private Pen _pen = new Pen(SystemColors.Control);
public ButtonEx() { }
protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); _rect = ClientRectangle; _rect.Inflate(-_rectWidth + 2, -_rectWidth + 2); _pen.Color = _rectColor; _pen.Width = _rectWidth; e.Graphics.DrawRectangle(_pen, _rect); }
[Browsable(true)] public Color RectColor { get { return _rectColor; } set { if (_rectColor != value) { _rectColor = value; this.Refresh(); } } }
[Browsable(true)] public byte RectWidth { get { return _rectWidth; } set { if (_rectWidth != value) { _rectWidth = value; this.Refresh(); } } }
[Browsable(true)] public byte CornerRadian { get { return _cornerRadian; } set { if (_cornerRadian != value) { _cornerRadian = value; IntPtr hRgn = CreateRoundRectRgn(0, 0, Width, Height, _cornerRadian * 2, _cornerRadian * 2); SetWindowRgn(Handle, hRgn, true); } } }
[DllImport("Gdi32.dll")] public static extern IntPtr CreateRoundRectRgn( int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nWidthEllipse, int nHeightEllipse);
[DllImport("User32.dll")] public static extern int SetWindowRgn( IntPtr hWnd, IntPtr hRgn, bool bRedraw); }
private void button1_Click(object sender, EventArgs e) { buttonEx1.CornerRadian = 6; buttonEx1.RectColor = Color.Blue; buttonEx1.RectWidth = 6; } } } |
Delete - Sa 02.09.17 20:40
- Nachträglich durch die Entwickler-Ecke gelöscht -
tomycat - Sa 02.09.17 21:10
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| private void button1_Click(object sender, EventArgs e) { ButtonEx button1x = new ButtonEx(); button1x.CornerRadian = 2; button1x.RectColor = Color.Blue; button1x.RectWidth = 2; Controls.Add(button1x); } |
thx, hmmmm ich habe ca.200 Button viele Textboxen und die Postionen passen sich nach verschiedenen usern an. Ich suche eine Lösung für:
Ich erstelle ein neues Projekt, ziehe 10 Buttons in mein Projekt, Button1 soll alle Buttons (umrandung / Ecken abrunden ) verändern. Ich will statische Buttons verändern. :-)
Delete - So 03.09.17 02:03
- Nachträglich durch die Entwickler-Ecke gelöscht -
tomycat - Mo 04.09.17 19:10
zu meinem Grundwissen:
Ich ziehe einen Button von der Toolbox in meine Form1
Dann schreibe ich Button1. und dann kommt meine Auswahl wie versteken unsichbar... Postion.
Leider kommt kein Button1.CornerRadian Da endet mein Grundwissen.:-)
Ralf Jansen - Mo 04.09.17 19:32
Zitat: |
Ich ziehe einen Button von der Toolbox in meine Form1 |
Ähm du hast da einen neuen Button. Also ziehst du diesen (ButtonEx) auf die Form und keinen Button. Falls es dir nicht bewusst ist. Um das Button Verhalten zu ändern musst du alle Buttons gegen ButtonEx austauschen.
Delete - Di 05.09.17 00:04
- Nachträglich durch die Entwickler-Ecke gelöscht -
Delete - Fr 08.09.17 04:59
- Nachträglich durch die Entwickler-Ecke gelöscht -
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!