sto disegnando un grafico su un controllo, ma 0,0 è nell'angolo superiore sinistro mano del controllo. C'è un modo per capovolgere le coordinate in modo che 0,0 sia nell'angolo in basso a sinistra del controllo?vibrazione coordinate nell'elaborazione per controllare
risposta
Se si sta utilizzando WinForms, allora si potrebbe scoprire che si può capovolgere l'asse Y con Graphics.ScaleTransform:
private void ScaleTransformFloat(PaintEventArgs e)
{
// Begin graphics container
GraphicsContainer containerState = e.Graphics.BeginContainer();
// Flip the Y-Axis
e.Graphics.ScaleTransform(1.0F, -1.0F);
// Translate the drawing area accordingly
e.Graphics.TranslateTransform(0.0F, -(float)Height);
// Whatever you draw now (using this graphics context) will appear as
// though (0,0) were at the bottom left corner
e.Graphics.DrawRectangle(new Pen(Color.Blue, 3), 50, 0, 100, 40);
// End graphics container
e.Graphics.EndContainer(containerState);
// Other drawing actions here...
}
Hai solo bisogno di includere l'inizio/chiamate contenitore finale, se si vuole fare ulteriore disegno usando anche il sistema di coordinate regolari. Ulteriori informazioni sui contenitori grafici sono available on MSDN.
Come accennato da Tom nei commenti, questo approccio richiede il valore Height
a essere disponibili con un valore corretto. Se provi questo e non vedi nulla di essere disegnato, assicurati che il valore sia corretto in un debugger.
È necessario aggiungere anche la traduzione affinché funzioni correttamente. – Eric
Grazie Eric. Ho aggiornato la mia risposta e incluso informazioni sull'utilizzo di contenitori grafici per isolare queste trasformazioni da altre modifiche. –
Non ha funzionato per me. Non sono ancora un wiz WinForms. Come risulta "Altezza" non si riferisce al controllo corrente. Ho chiamato questo nel mio pannello.OnPaint e niente è stato dipinto. Menzionare che si presume che tu stia attingendo al modulo stesso potrebbe risparmiare un po 'di tempo, poiché potrebbe avermi risparmiato un po' di tempo di debug;) – Tom
No, ma utilizzando le proprietà Size
(o Height
) del controllo, è facile calcolare le coordinate capovolte: Basta disegnare su Height-y
.
Non che io sappia, ma se si utilizza (x, Control.Height-y) si ottiene lo stesso effetto.
insomma no, se sto disegnando sui controlli molto ho alcune funzioni che mi aiutano:
Point GraphFromRaster(Point point) {...}
Point RasterFromGraph(Point point) {...}
questo modo mantengo tutto la conversione in un unico luogo, senza preoccuparsi di cose come y - this.Height
sparsi per il codice.
perché il voto negativo? – Pondidum
Ecco un semplice controllo utente che dimostra come eseguire questa operazione:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.ScaleTransform(1.0F, -1.0F);
e.Graphics.TranslateTransform(0.0F, -(float)Height);
e.Graphics.DrawLine(Pens.Black, new Point(0, 0), new Point(Width, Height));
base.OnPaint(e);
}
}
- 1. controllare l'intensità della vibrazione nei telefoni Android? È possibile?
- 2. devono attuare vibrazione Haskell per Proc
- 3. Vibrazione telefono in UWP
- 4. Android Vibrazione al tocco?
- 5. Notifica di aggiornamento vibrazione/suoneria
- 6. vibrazione di Edittext in Android
- 7. Test di vibrazione dell'emulatore Android?
- 8. Converti coordinate GPS in coordinate coordinate
- 9. Come attivare la vibrazione all'ingresso audio?
- 10. Convertire NSPoint a schermo coordinate per la finestra coordinate
- 11. (Vibrazione TextView) Configurare gli attributi per le viste personalizzate
- 12. Ottenere le coordinate in coordinate
- 13. Indice spaziale per coordinate geografiche?
- 14. Android: disattivare la vibrazione predefinita di OnLongClick
- 15. Utilizzo vibrazione e AVCaptureSession allo stesso tempo
- 16. Autorizzazione vibrazione richiesta solo su alcuni dispositivi
- 17. covarianza e varianza vibrazione in scala
- 18. Android: Notification.DEFAULT_VIBRATE richiede l'autorizzazione a vibrazione?
- 19. jquery come fare un effetto di vibrazione?
- 20. Converti coordinate UIKit in coordinate SpriteKit
- 21. ASP.NET: scorri per controllare
- 22. PHP controllare per NULL
- 23. Coordinate XCode per display Retina iPad
- 24. Come si ripristinano le coordinate per panzoom.js?
- 25. Nome del paese per le coordinate GPS
- 26. API GoogleMaps -indirizzo per coordinate (latitudine, longitudine)
- 27. Conversione UIKeyboardFrameEndUserInfoKey per visualizzare o Finestra Coordinate
- 28. SciPy interp2D per coppie di coordinate
- 29. creare un meshgrid per coordinate polari
- 30. Servizio Web per ottenere le coordinate GPS
Si sta utilizzando WinForms o WPF? Potresti voler aggiornare i tag sulla tua domanda. –