Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357

    [c#] posizionamento immagini su una mappa

    Buongiorno!

    In un programma per la gestione degli estintori in azienda ho la necessità di definire, sulla mappa dello stabilimento, le posizioni delle varie postazioni antincendio.
    Vorrei poterlo fare in maniera semplice ed intuitiva per l'utente:

    mi immagino la pagina di gestione delle postazioni che visualizza la mappa dello stabilimento;
    l'utente clicca sul pulsante 'nuova postazione';
    compare, sopra la mappa, l'immaginetta di un estintore che l'utente potrà trascinare nella posizione desiderata;
    infine, cliccando il pulsante 'salva postazione', verranno salvate su database le coordinate della bitmap raffigurante l'estintore.

    La mia domanda è questa: come gestisco queste immaginette? sicuramente dovrò creare una classe 'Postazione' che dovrà intercettare alcuni eventi tipo DragDrop.. (quindi dovrò ereditare da una classe che ha già questi eventi?)..

    Mi date una mano? Se l'esposizione non è chiara vi prego di dirmelo..

    Grazie

  2. #2
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    ho bisogno di spunti, please :master:

  3. #3
    Hai bisogno semplicemente di una classe (ad esempio Estintore) che ti indica la posizione dell'oggetto (coordinate X e Y del click del mouse), poi nella form (evento onpaint) disegnerai tutte le immaginette degli estintori che hai (tipo puoi salvarle in una List<Estintore>) e se viene fatto il click in uno di questi punti sulla form (con un margine, che so di 15px?) allora fai un drag'n'drop dell'immaginetta selezionata, basato sempre sulla posizione (in movimento) del mouse...

    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  4. #4
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    Ciao, grazie per la risposta

    Quindi tu dici - dimmi se ho capito male - che sull'evento onClick sulla form mi scorro la lista degli estintori e testo se il click cade all'interno di uno di loro.. è così?

    Io però vorrei che fossero direttamente gli estintori a catturare l'evento onClick. In questo caso non dovrei creare la classe Estintore partendo da una classe che già è in grado di sentire l'evento onclick?

  5. #5
    Originariamente inviato da ganesha
    Quindi tu dici - dimmi se ho capito male - che sull'evento onClick sulla form mi scorro la lista degli estintori e testo se il click cade all'interno di uno di loro.. è così?
    si

    Originariamente inviato da ganesha
    Io però vorrei che fossero direttamente gli estintori a catturare l'evento onClick. In questo caso non dovrei creare la classe Estintore partendo da una classe che già è in grado di sentire l'evento onclick?
    puoi farlo, estendendo ad esempio dei button. l'unico problema è che in questo modo ad ogni button corrisponde un hwnd, ovvero una finestra per il sistema operativo. Se hai 20/30 estintori rischi che la cosa già diventi pesante, con 100 diventa molto pesante... per questo ti ho proposto l'idea di disegnarli e quindi fare un click "virtuale"... scelte progettuali, come sempre, dipende da te.

    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  6. #6
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    mmm.. ho capito..

    allora mi serve di capire un paio di cose:

    - quand'è che viene invocato l'evento Paint
    - come faccio a disegnare gli estintori sul form

    grazie

  7. #7
    Utente di HTML.it L'avatar di fu510n
    Registrato dal
    Sep 2005
    Messaggi
    137
    A me sembra più semplice, dovendo creare la classe estintore, creare un controllo utente con gia' l'immagine dentro...in modo che non devi gestire il disegno ma solo il posizionamento. Quando carichi il form con la mappa vai a leggere tutte le coordinate che in realtà ti rappresentano i valori delle "Location" di ogni "UserControl"->"Estintore". Inoltre ti ritrovi già gli eventi per drag&drop e devi gestirne solo il codice.
    Fusion

    Currency Text Box (Updated: 16 Maggio 2008): http://digilander.libero.it/cmfusion/CurrencyTextBox.html

  8. #8
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    Originariamente inviato da fu510n
    A me sembra più semplice, dovendo creare la classe estintore, creare un controllo utente con gia' l'immagine dentro...in modo che non devi gestire il disegno ma solo il posizionamento. Quando carichi il form con la mappa vai a leggere tutte le coordinate che in realtà ti rappresentano i valori delle "Location" di ogni "UserControl"->"Estintore". Inoltre ti ritrovi già gli eventi per drag&drop e devi gestirne solo il codice.
    Questo era quello che avevo in mente!

    Per disegnare l'estintore sulla form devo implementare l'handler dell'evento OnPaint della nuova classe?

  9. #9
    Utente di HTML.it L'avatar di fu510n
    Registrato dal
    Sep 2005
    Messaggi
    137
    Originariamente inviato da ganesha
    Per disegnare l'estintore sulla form devo implementare l'handler dell'evento OnPaint della nuova classe?
    No. Il disegno viene gestito automaticamente dallo UserControl. L'unica cosa che devi gestire è la creazione di un nuovo oggetto "Estintore" e le operazioni di Drag&Drop.

    Non ho molto tempo quindi te lo spiego in modo semplice...in vb.net

    -----------------------------------
    Click su "Nuova Postazione":

    Form1.SuspendLayout()
    Dim NuovoEstintore As New Estintore
    NuovoEstintore.Location = New Point([coordinate x e y])
    Form1.Controls.Add(NuovoEstintore)
    Form1.ResumeLayout(False)
    Form1.PerformLayout()
    -----------------------------------

    L'oggetto verrà creato e posizionato in un punto a piacere, ad esempio al centro della mappa...
    Lo spostamento dell'oggetto per il posizionamento effettivo verrà effettuato tramite drag&drop.


    Scusa ma adesso sono in ufficio e nn ho tempo a sufficienza per scrivere del codice C# in Visual Studio...
    Fusion

    Currency Text Box (Updated: 16 Maggio 2008): http://digilander.libero.it/cmfusion/CurrencyTextBox.html

  10. #10
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    ok, quello che hai scritto è chiaro.

    Quello che non capisco è:
    come dico alla classe che quando creo un nuova istanza in una certa posizione, in quella posizione deve visualizzare una bitmap?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.