Ich verwende Leinwand in meiner Anwendung mit JavaScript. Auf dieser Leinwand zeichne ich ein Rechteck. Ich möchte Rechteck mit Hilfe der Maus bewegen (z. B. Schieber verschieben), wie dieses Rechteck mit JavaScript oder J-Abfrage zu bewegen.So verschieben Sie das Rechteck auf der Leinwand
2
A
Antwort
6
Eine Leinwand ist buchstäblich nur eine Oberfläche, die Sie malen auf, und keines der Dinge, die Sie Objekte malen sind.
Wenn Sie so tun wollen, als ob es sich um Objekte handelt (wie ein Rechteck oder eine Linie), müssen Sie alles verfolgen und alle Treffer-Tests durchführen und sich neu bemalen.
Ich schrieb eine gentle introduction article auf die ersten Schritte, indem Sie Rechtecke, die Sie auswählen und ziehen können. Lass das lesen.
7
Auf einer zweiten Lesung, ich glaube, ich Ihre Frage falsch verstanden, also hier eine aktualisierte Version:
$(function() {
var
$canvas = $('#canvas'),
ctx = $canvas[0].getContext('2d'),
offset = $canvas.offset(),
draw,
handle;
handle = {
color: '#666',
dim: { w: 20, h: canvas.height },
pos: { x: 0, y: 0 }
};
$canvas.on({
'mousedown.slider': function (evt) {
var grabOffset = {
x: evt.pageX - offset.left - handle.pos.x,
y: evt.pageY - offset.top - handle.pos.y
};
// simple hit test
if ( grabOffset.x >= 0
&& grabOffset.x <= handle.dim.w
&& grabOffset.y >= 0
&& grabOffset.x <= handle.dim.h
) {
$(document).on({
'mousemove.slider': function (evt) {
handle.pos.x = evt.pageX - offset.left - grabOffset.x;
// prevent dragging out of canvas
if (handle.pos.x < 0) {
handle.pos.x = 0;
}
if (handle.pos.x + handle.dim.w > canvas.width) {
handle.pos.x = canvas.width - handle.dim.w;
}
//handle.pos.y = evt.pageY - offset.top - grabOffset.y;
},
'mouseup.slider': function() {
$(document).off('.slider');
}
});
}
}
});
draw = function() {
var val = (100 * (handle.pos.x/(canvas.width - handle.dim.w))).toFixed(2) + '%';
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
ctx.fillStyle = handle.color;
ctx.fillRect(handle.pos.x, handle.pos.y, handle.dim.w, handle.dim.h);
ctx.textBaseline = 'hanging';
ctx.font = '12px Verdana';
ctx.fillStyle = '#333';
ctx.fillText(val, 4, 4);
ctx.fillStyle = '#fff';
ctx.fillText(val, 3, 3);
};
setInterval(draw, 16);
});
prev Version:
Sehr einfache Lösung verlängern auf:
$(function() {
var
ctx = $('#canvas')[0].getContext('2d'),
$pos = $('#pos'),
draw;
draw = function() {
var x = ($pos.val()/100) * (ctx.canvas.width - 20);
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
ctx.fillStyle = 'black';
ctx.fillRect(x, 0, 20, 20);
};
setInterval(draw, 40);
});
Verwandte Themen
- 1. Animiere Rechteck auf Leinwand
- 2. Leinwand verschieben Objekt im Kreis
- 3. Drehen Sie das gezeichnete Rechteck auf der Leinwand, wenn die Taste gedrückt wird
- 4. Ziehen und verschieben Sie einen auf der Leinwand gezeichneten Kreis
- 5. Effekt Schatten in Rechteck Leinwand
- 6. JavaFX: So verschieben Sie das Bild
- 7. So verschieben Sie ein Objekt auf Leinwand (PACMAN), wenn Sie eine Taste drücken
- 8. So verschieben Sie das Bild in Javascript
- 9. So verschieben Sie das HTML-Element
- 10. So schneiden Sie ein ausgewähltes Rechteck mithilfe von Mausklicks
- 11. Verschieben eines Bildes auf Leinwand mit KeyPressed
- 12. Unbekanntes weißes Rechteck über Leinwand Ausgabe
- 13. So dehnen Sie das Rechteck über die Gitterzelle in XAML
- 14. Wie ein Rechteck auf einer WPF-Leinwand zeichnen
- 15. So verschieben Sie ANDROID_SDK_HOME
- 16. Android - So verschieben Sie ImageView auf Swipe
- 17. Drehen Sie die Zeichnung auf Leinwand
- 18. Silverlight 3 - Datenbindungsposition eines Rechteck auf einer Leinwand
- 19. Python Tkinter Leinwand Rechteck mit einem Bild
- 20. So richten Sie das Rechteck an die Mitte des übergeordneten Elements mit Kivy
- 21. So wählen Sie ein Rechteck aus der Liste mit Linq
- 22. So verschieben Sie das Fenster mit dem Befehl wmctrl
- 23. Zeichnen Rechteck auf SurfaceView
- 24. WPF So vergrößern Sie die Figur auf einer Leinwand
- 25. Verschieben von Formen in Leinwand mit den Pfeiltasten
- 26. Kann einen Kreis auf Leinwand HTML nicht verschieben?
- 27. So speichern Sie ein Bild von der Leinwand
- 28. Leinwand; So entfernen Sie Formen rückwirkend
- 29. Beschränken Sie das Rechteck innerhalb des Rechtecks
- 30. auf Leinwand auf der X-Achse nur
danke an alle mein Problem ist gelöst – pravin