![]() |
[FMX] UI wird nicht sauber gezeichnet
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
leider passiert es in meiner Anwendung vermehr, dass die Oberfläche nicht sauber gezeichnet wird und unsichtbare Ränder von TLayouts oder TLabels als schwarzer Strich angezeigt werden. Bis jetzt ist dieses Verhalten nur unter Windows zu sehen. IOS und OS X werden richtig dargestellt. Kennt jemand das Problem bzw. hat eine Lösung hierfür? Gruß |
AW: [FMX] UI wird nicht sauber gezeichnet
Zitat:
Hab ich noch nie gesehen,,, Auf "allen" Rechnern? Altes Windows oder alter Grafiktreiber? Dynamisch erzeugt oder per OI? In TestApp nach zu vollziehen? Mavarik |
AW: [FMX] UI wird nicht sauber gezeichnet
Ist ein Windows 10 System, alle Grafiktreiber aktuell. Das Problem tritt auf diversen Rechnern auf, von Windows Xp - Server 2012. Auch als Webanwendung mit Virtual UI das selbe Problem.
Vermute dass es an dem Style liegt, den ich aus XE 7 übernommen habe. Allerdings verschwinden die Fehler wenn ich zum Beispiel den Fokus auf ein Edit setze, zumindest meistens. Da manchmal das UI fehlerfrei ist kann es aber eigentlich nicht am Style liegen, oder? Die Controls werden zur Laufzeit auf das Main-Form geholt, jedoch nicht dynamisch erzeugt. |
AW: [FMX] UI wird nicht sauber gezeichnet
Hast du mal versucht Top/Left ein bissl zu verschieben?
z.B. um 0,5 Ändert sich da der Rand der Labels? Aber wenn es die selbe Farbe ist, dann hätte ich gedacht, dass sich die gesamtfarbe nicht ändert, selbst wenn da das Blau des Labels mit dem des Hintergrundes verrechnet wird. Ich hatte schon "unscharfe" Linien und Schrift und konnte den Effekt durch minimales Verschieben mindern. |
AW: [FMX] UI wird nicht sauber gezeichnet
Liste der Anhänge anzeigen (Anzahl: 1)
Bis jetzt hab ich leider noch keine Lösung gefunden, dafür aber ein neues Problem. Sobald ich das UI Skaliere (Controls vergrößere) tauchen u.a. bei Tedit unschöne Linien auf.
http://www.delphipraxis.net/attachme...1&d=1476726298 Ich bin mir sicher dass das selbe Problem hier im Forum bereits besprochen wurde, finde nur leider den Thread nicht mehr. |
AW: [FMX] UI wird nicht sauber gezeichnet
Ich hatte gestern bei einem Kunden ein seltsames Phänomen, da wurden Teile der GUI unserer Windows-App plötzlich schwarz. Ich vermute das ist ein Treiber-Problem. Ich habe dann bei der Verknüpfung unter Kompatiblität mal die Designs und visuellen Stile deaktiviert, seitdem tritt das nicht mehr auf. Vielleicht hilft das bei dir auch?
|
AW: [FMX] UI wird nicht sauber gezeichnet
Liste der Anhänge anzeigen (Anzahl: 2)
Die Fehler treten nur auf wenn form.scale.x und y ungleich 1 ist.
Ich skaliere wie folgt:
Delphi-Quellcode:
Anbei eine Testanwendung. Wäre nett wenn jemand kurz testen könnte ob der Fehler bei ihm auch auftritt.
procedure TfrmMain.FormResize(Sender: TObject);
var scaleX, scaleY, scaleFaktor: double; begin if (frmMain.Height > 712) and (frmMain.Width > 1024) then begin //Für eine gleichmäßige Skallierung den kleineren Wert ermitteln scaleX := frmMain.ClientWidth/1024; scaleY := frmMain.ClientHeight/712; scaleFaktor := max(min(scaleX, scaleY),1); frmMain.laMain.Scale.X := scaleFaktor; frmMain.laMain.Scale.Y := scaleFaktor; end else begin scaleX := frmMain.ClientWidth/1024; scaleY := frmMain.ClientHeight/712; scaleFaktor := max(min(scaleX, scaleY),0.6); frmMain.laMain.Scale.X := scaleFaktor; frmMain.laMain.Scale.Y := scaleFaktor; end; end; http://www.delphipraxis.net/attachme...1&d=1476783277 |
AW: [FMX] UI wird nicht sauber gezeichnet
Schick bitte mal den Source zum testen...
|
AW: [FMX] UI wird nicht sauber gezeichnet
Code wollte ich anhängen, leider ist mir Delphi nach dem compilieren abgestürzt. Und jetzt... bekomme ich es in einer Testanwendung nicht mehr reproduziert.
|
AW: [FMX] UI wird nicht sauber gezeichnet
Liste der Anhänge anzeigen (Anzahl: 1)
Hier wenigstens ein Screenshot von mir
|
AW: [FMX] UI wird nicht sauber gezeichnet
Danke, dann liegt es wohl nicht an meinem Rechner.
Versuche noch den Source bereitzustellen. |
AW: [FMX] UI wird nicht sauber gezeichnet
Zitat:
Versuch mal ein beginupdate endupdate |
AW: [FMX] UI wird nicht sauber gezeichnet
Leider nicht. Ich aktiviere jetzt nach jedem View-Wechsel einen Timer der ein
Delphi-Quellcode:
ausführt. Leider sieht man trotzdem für einen Bruchteil einer Sekunde die schwarzen Linien.
myform.repaint
|
AW: [FMX] UI wird nicht sauber gezeichnet
Zitat:
Fensters ändern, schon sieht alles prima aus... Daher mein Vorschlag.. |
AW: [FMX] UI wird nicht sauber gezeichnet
Sobald ich ein Resize manuell ausführen stimme ich Dir zu. Ein
Delphi-Quellcode:
bringt jedoch nix.
myForm.OnResize(sender);
|
AW: [FMX] UI wird nicht sauber gezeichnet
Zitat:
Und wenn du kein Event angehängt hast, dann knallt das auch wunderschön. |
AW: [FMX] UI wird nicht sauber gezeichnet
Macht Sinn. Wie dann?
|
AW: [FMX] UI wird nicht sauber gezeichnet
Hallo,
Form.Invalidate? |
AW: [FMX] UI wird nicht sauber gezeichnet
Ich mache ja einen Repaint. Das ist doch ein invalidate und ein update, oder?
|
AW: [FMX] UI wird nicht sauber gezeichnet
Liste der Anhänge anzeigen (Anzahl: 1)
Ich wüsste aber langsam auch gerne wie man aus der Nummer wieder herauskommt. Es ist ja anscheinend dass er die einzelnen Teile des "Bitmap-Stil-Designers" nicht so ganz richtig aufeinanderlegt. Im Anhang einmal ein Beispiel mit einem TButton. Ich denke mal das ist einfach so und man kann nichts dagegen tun, oder?
|
AW: [FMX] UI wird nicht sauber gezeichnet
Zitat:
|
AW: [FMX] UI wird nicht sauber gezeichnet
Ich denke es tritt per se auf, nur manchmal deutlich sichtbar, manchmal weniger deutlich. Hast du nochmal ein Quellcodebeispiel? Bei mir reicht es ein TScaledLayout zu nehmen und einen Button reinzustecken.
|
AW: [FMX] UI wird nicht sauber gezeichnet
Zitat:
![]() |
AW: [FMX] UI wird nicht sauber gezeichnet
Nein, ich meinte nicht die Edit-Geschichte.
Ich habe (zumindest bislang) keine komischen Linien in Edit-Feldern. Ich habe dass, wenn man genau hinschaut, bei starker Vergrößerung sieht wie die Komponenten aus einzelnen Bitmaps zusammengesetzt werden. Das sollte die Abbildung des Buttons weiter oben zeigen. |
AW: [FMX] UI wird nicht sauber gezeichnet
Liste der Anhänge anzeigen (Anzahl: 1)
Wäre hilfreich, wenn Du mal einen Beispiel-Code posten würdest, bislang habe ich nur Bilder und Exe-Dateien gefunden (so kann ich nicht nachvollziehen, welche Komponenten-Zusammenstellung Du da letztlich genau verwendest), oder habe ich was übersehen?
Davon abgesehen, halte ich es aber nicht für ausgeschlossen, dass es die gleiche Problematik wie bei den Edit, ComboBox, Buttons, Listbox usw. -Controls sein könnte. Zumindest der Button in Deiner Beispiel-Exe hat bei mir blaue Linien (siehe anliegenden Screenshot). |
AW: [FMX] UI wird nicht sauber gezeichnet
Im Prinzip nutzt FMX auch in der HD-Variante eine 3D-Grafikengine und die arbeitet halt nicht mit ganzen Pixeln ... da kann schonmal bissl was 'nen Hauch verrutschen und schon hat man unscharfe Kanten, unscharfe Schrift, komische Linien und wer weiß was sonst noch. :stupid:
Du bauchst einfach nur 'en UltraHD-Display mit megavielen DPI ... da fallen dann diese kleinen Fehler nicht mehr auf, wenn sie nur 'nen Pixel breit sind. :lol: PS: Sowas bitte nicht als JPEG ... nehmt doch bitte PNG oder ein anderes verlustfreies Format. Sonst sieht man mehr Fehler/Unschärfen, als es gibt. :zwinker: |
AW: [FMX] UI wird nicht sauber gezeichnet
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: [FMX] UI wird nicht sauber gezeichnet
Liste der Anhänge anzeigen (Anzahl: 2)
Anbei einmal ein komplettes Sample. Einfach neue Anwendung und diesen Code einfügen:
Delphi-Quellcode:
Wenn man auf den Button drückt kann man eine FMX-Style-Datei einladen und anwenden. Das zeigt wohl: FMX an sich macht alles richtig, es sind wohl die Styles selber. Oder irgendetwas darin.
implementation uses FMX.Layouts, FMX.StdCtrls, FMX.Styles;
{$R *.fmx} procedure TForm1.FormCreate(Sender: TObject); var newLayout: TScaledLayout; paddingRect: TRectF; newButton: TTextControl; begin ClientWidth := 80; ClientHeight := 60; newLayout := TScaledLayout.Create(self); newLayout.Parent := self; newLayout.Size.Size := TSizeF.Create(ClientWidth, ClientHeight); newLayout.OriginalWidth := ClientWidth; newLayout.OriginalHeight := ClientHeight; newLayout.Align := TAlignLayout.Fit; paddingRect := newLayout.Margins.Rect; paddingRect.Offset(6, 6); newLayout.Margins.Rect := paddingRect; newButton := TButton.Create(self); newButton.Parent := newLayout; newButton.Align := TAlignLayout.Client; newButton.Text := 'FMX'; newButton.OnClick := handleButtonClick; end; procedure TForm1.handleButtonClick(Sender: TObject); var openDialog: TOpenDialog; begin openDialog := TOpenDialog.Create(nil); try if openDialog.Execute() then TStyleManager.SetStyleFromFile(openDialog.FileName); finally openDialog.Destroy(); end; end; Anbei zwei Bilder: Sie zeigen einfach nur zwei unterschiedliche Styles. Der erste sieht in jeder Lebenslage traumhaft aus (!), beim zweiten sieht man leider überdeutlich diese komischen Linien. |
AW: [FMX] UI wird nicht sauber gezeichnet
Schon mal eins dazu: Wenn der Button im Gradient-Style gemalt wird, ist alles OK.
Probleme gibt es wohl nur bei dem normalen Zeichenstil. Ich fürchte, man müsste sich mal genau ansehen, wie FMX hier die Zeichenausgabe macht, da wird es ein Rundungsproblem geben oder ein Clipping-Problem (falsche Grenzen). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz