Ich entwickle ein benutzerdefiniertes Winforms UserControl, das eine Liste von "Etiketten" (als abgerundete Rechtecke mit Text) angezeigt und die Auto-Scrolling unterstützt. Jedes Mal, wenn ein Benutzer auf eine "+" -Staste klickt, wird eine neue Etikett zu einer Liste hinzugefügt und sollte auf der Steuerung angezeigt werden. Die Onpaint -Methode der Steuerung iteriert über die Liste der Beschriftungen, passt die Position jedes Etiketts gemäß dem aktuellen Scroll -Offset (unter Verwendung von autoscrollPosition) an und zeichnet sie dann.
Ich entwickle ein benutzerdefiniertes Winforms UserControl, das eine Liste von "Etiketten" (als abgerundete Rechtecke mit Text) angezeigt und die Auto-Scrolling unterstützt. Jedes Mal, wenn ein Benutzer auf eine "+" -Staste klickt, wird eine neue Etikett zu einer Liste hinzugefügt und sollte auf der Steuerung angezeigt werden. Die Onpaint -Methode der Steuerung iteriert über die Liste der Beschriftungen, passt die Position jedes Etiketts gemäß dem aktuellen Scroll -Offset (unter Verwendung von autoscrollPosition) an und zeichnet sie dann.[code]public class LabelListController : UserControl { int stringNumber = 0; List labels = new List();
foreach (var rect in labels) { int shiftedY = rect.Y - this.AutoScrollPosition.Y; Rectangle shiftedRect = new Rectangle(rect.X, shiftedY, rect.Width, rect.Height); if (e.ClipRectangle.IntersectsWith(shiftedRect)) { DrawLabel(e, new Point(rect.X, shiftedY), rect.Width, rect.Height); } } }
private void DrawLabel(PaintEventArgs e, Point position, int sizeX, int sizeY) { int paddingX = 20; int paddingY = 20; int posX = position.X + paddingX; int posY = position.Y + paddingY;
Rectangle rect = new Rectangle(posX, posY, sizeX, sizeY);
using (SolidBrush brush = new SolidBrush(fillColor)) { g.FillPath(brush, path); }
if (borderWidth > 0) { using (Pen pen = new Pen(borderColor, borderWidth)) { pen.Alignment = PenAlignment.Center; g.DrawPath(pen, path); } } } }
private void DrawString(Graphics g, string text, float x, float y, int textSize) { using (System.Drawing.Font drawFont = new System.Drawing.Font("Arial", textSize, FontStyle.Regular)) using (SolidBrush drawBrush = new SolidBrush(Color.White)) { StringFormat format = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
PointF point = new PointF(x, y); g.DrawString(text, drawFont, drawBrush, point, format); } } } [/code] Ich habe die Mallogik der Kontrolle des Steuerelements debuggen und bemerkt, dass die Etiketten nach dem Scrollen nicht richtig machten.>
Nachdem ich Python in diesem Tag versehentlich deinstalliert hatte, habe ich versucht, es neu zu installieren, aber sys.prefix wurde durcheinander und weigerte sich, sich selbst zu fixieren. In g: \...
Es tut mir leid, wenn dies schon einmal gefragt wurde. Ich habe an einem Nebenprojekt gearbeitet und Spring Security hat durchweg fehlerhafte Anmeldeinformationen zurückgegeben, selbst nach der...
Ich möchte Bücher aus einer Datenbank in ein FlowLayoutPanel in einer Formular-App laden
(dieser Teil funktioniert einwandfrei), aber wenn ich den automatischen Bildlauf aktiviere, wird die...
Das Karussell meiner Website funktioniert, wenn die Website eine normale Desktop-Größe hat, z. B. 1440 Pixel breit, aber wenn ich anfange, es zu verkleinern, wird es nicht abgeschnitten, wie es auf...
Das Karussell meiner Website funktioniert, wenn die Website eine normale Desktop-Größe hat, z. B. 1440 Pixel breit, aber wenn ich anfange, es zu verkleinern, wird es nicht abgeschnitten, wie es auf...