HTML5 Responsive-Canvas: Die Größe der Browser-Zeichenfläche wird nicht mehr angezeigt

8

Ich möchte eine reaktionsfähige Leinwand erstellen, die die Größe in Prozent verwendet. Sobald der Benutzer die Größe des Fensters ändert, wird die Leinwand relativ angepasst. Ich bin in der Lage, die Leinwand unter Verwendung von unterhalb Code zu skalieren, aber das einzige Problem ist, wie ich die Fenstergröße skalieren die Mauszeichnung verschwinden.

%Vor%

Danke.

    
iawara 08.04.2013, 11:52
quelle

7 Antworten

10

Umgang mit Inhalten beim Ändern der Größe einer Zeichenfläche

Wenn Sie die Leinwandgröße ändern, wird der gezeichnete Inhalt immer gelöscht. So verhält sich Canvas.

Sie können den Inhalt entweder nach der Größenänderung neu zeichnen oder Sie können den Inhalt als Bilddaten speichern und nach der Größenänderung wiederherstellen (siehe canvas.toDataURL).

Hier ist Code und eine Fiddle: Ссылка

%Vor%     
markE 08.04.2013 14:37
quelle
3

Ich hatte auch das gleiche Problem, das Sie in meiner Anwendung haben, und nachdem ich darüber gelesen hatte, kam ich zu dem Schluss, dass das Verhalten des Canvas-Elements so ist, dass es sich nach der Größenanpassung selbst löscht besteht darin, einen Listener für das Ereignis "Größe neu definieren" hinzuzufügen und die Zeichenfläche neu zu zeichnen, wenn das Ereignis ausgelöst wird.

%Vor%

Ich hoffe, es hilft.

Quelle

    
Rahul Jain 26.04.2013 04:03
quelle
2
%Vor%

Der obige Code entspricht clearRect , das zum Löschen der Zeichenfläche verwendet wird. Daher können Sie die Breite und Höhe nicht anpassen, wenn Sie beibehalten möchten, was zuvor gezeichnet wurde. Als Lösung können Sie eine neue Arbeitsfläche mit der erforderlichen Breite erstellen und den Inhalt der vorherigen Arbeitsfläche mithilfe von drawImage(c) c zeichnen. Dies ist das Arbeitsflächenobjekt .Dann müssen Sie die Arbeitsfläche löschen

    
Arun Killu 08.04.2013 11:56
quelle
2

Danke. Es war sehr hilfreich. Unten ist der Code, den ich versuchte zu tun.    

%Vor%     
iawara 09.04.2013 06:49
quelle
2

Ich habe ein jQuery-Plugin erstellt, das die HTML5-Canvas-Größenänderung behandelt. Es wurde entwickelt, um die Lücke zwischen mobilen und Desktop-Benutzern zu schließen. Es ist immer noch ein WIP, aber es ist erweiterbar und enthält einige grundlegende Zeichenfunktionen.

Ссылка

    
tsanders 25.04.2013 23:16
quelle
0

Ich benutze diese Methode:

%Vor%     
karaxuna 17.04.2014 08:48
quelle
0

Ich hatte das gleiche Problem. Meine Lösung verwendet die CSS3-Eigenschaft Zoom zum übergeordneten Container der Zeichenfläche:

%Vor%

coef - Koeffizient, um Einrückungen der Leinwand von den Grenzen der Eltern zu machen. Sie können es zu Null machen.

Ich hoffe, es hilft jemandem: -)

    
Paul Basenko 31.03.2017 07:29
quelle

Tags und Links