in
La comunità italiana dedicata a Sviluppatori e Architetti IT delle piattaforme Windows

[C#] ASP.NET - Incollare un'immagine degli appunti

Ultimo messaggio ricevuto il 08-04-2008 8.44 da devspy. 6 risposta(e).
Pagina 1 di 1 (7 elemento/i)
Ordina messaggi: Precedente Successivo
  • 02-04-2008 10.40

    • niples
    • Utente Top 500
    • Registrato il 14-03-2008
    • Messaggi 4

    [C#] ASP.NET - Incollare un'immagine degli appunti

    Salve a tutti,

    vi scrivo per un nuovo quesito che potrebbe interessare a molti:

    supponiamo di aver copiato negli appunti di Win lo screenshoot dello schermo (Per intenderci tramite il tasto Stamp della tastiera), mi servirebbe creare un tool dove sia possibile incollare l'immagine e poi con un bottone salvarla.

    Avevo pensato di inserire nella pagina un'immagine nascosta da visualizzare solo dopo la pressione di un bottone che è associato a una funzione che preleva quello che abbiamo negli appunti e lo salva in un file.

    Secondo voi è possibile farlo? Mi date una mano?

    grazie infinite

    Nicola

    • Log
  • 04-04-2008 16.17 In risposta a

    Re: [C#] ASP.NET - Incollare un'immagine degli appunti

    Eccoti uno spunto:
    if (System.Windows.Forms.Clipboard.ContainsImage()) {
      System.Drawing.Image img = System.Windows.Forms.Clipboard.GetImage();
      img.Save(@"c:\immagine.gif");
    }
    Archiviato in: ,
    • Log
  • 07-04-2008 9.42 In risposta a

    • niples
    • Utente Top 500
    • Registrato il 14-03-2008
    • Messaggi 4

    Re: [C#] ASP.NET - Incollare un'immagine degli appunti

    Grazie mille per la risposta,

     

    il problema è che devo necessariamente usare il framework 1.1 e mi dice che la classe Clipboard non esiste. Ho provato anche ad aggiungere:

    using System.Windows.Forms.Clipboard;

    ma l'errore è lo stesso. Ho paura che col framework 1.1 questa operazione non si possa fare nativamente.

     grazie ancora

    • Log
  • 07-04-2008 13.34 In risposta a

    Re: [C#] ASP.NET - Incollare un'immagine degli appunti

    In effetti col Framework 1.1 è un po' più complicato rispetto a 2.x e 3.x.

    Quello che segue è un esempio di copia&incolla basato su testo. Modificando il valore di DataFormats dovresti riuscire a manipolare le immagini.

    // carico un testo in Clipboard
    private void button1_Click(object sender, System.EventArgs e) {
    if (textBox1.SelectedText != "")
    Clipboard.SetDataObject(textBox1.SelectedText);
    else
    textBox2.Text = "Nessun testo selezionato in textBox1";
    }


    private void button2_Click(object sender, System.EventArgs e) {

    // recupero il contenuto della clipboard
    IDataObject iData = Clipboard.GetDataObject();

    // verifico che il formato sia testuale
    if (iData.GetDataPresent(DataFormats.Text)) {
    textBox2.Text = (string) iData.GetData(DataFormats.Text);
    } else {
    textBox2.Text = "La clipboard non contiene testo.";
    }
    }
    Archiviato in: ,
    • Log
  • 07-04-2008 13.39 In risposta a

    Re: [C#] ASP.NET - Incollare un'immagine degli appunti

    Altri spunti per .NET 1.1.

    Per verificare il tipo di contenuto:

            IDataObject d = Clipboard.GetDataObject();

    if (d.GetDataPresent(DataFormats.Bitmap)) {
    Console.WriteLine("Immagine");
    } else if(d.GetDataPresent(DataFormats.Text)) {
    Console.WriteLine("Testo");
    } else {
    Console.WriteLine("Altro");
    }

    Per salvare su file:

            IDataObject d = Clipboard.GetDataObject();

    if (d.GetDataPresent(DataFormats.Bitmap)) {
    Bitmap b = (Bitmap) d.GetData(DataFormats.Bitmap);
    b.Save(@"c:\mia_bitmap.bmp");
    } else {
    Console.WriteLine("La clipboard non contiene immagini.");
    }

    Archiviato in: ,
    • Log
  • 07-04-2008 17.25 In risposta a

    • niples
    • Utente Top 500
    • Registrato il 14-03-2008
    • Messaggi 4

    Re: [C#] ASP.NET - Incollare un'immagine degli appunti

    Purtroppo la classe Clipboard non c'è nel Framework 1.1

    Poi Clipboard è di System.Windows.Forms, è sicuro che posso usarlo in ASP.NET?

    grazie 

    • Log
  • 08-04-2008 8.44 In risposta a

    Re: [C#] ASP.NET - Incollare un'immagine degli appunti

    niples:
    Purtroppo la classe Clipboard non c'è nel Framework 1.1

    Clipboard è un oggetto del Framework 1.1, presente nella libreria System.Windows.Forms.dll.

    Leggi questa pagina su MSDN:
    Clipboard.GetDataObject Method

     

    niples:
    Poi Clipboard è di System.Windows.Forms, è sicuro che posso usarlo in ASP.NET?

    Puoi utilizzare questa classe in ASP.NET, ma ovviamente incollerai il contenuto della Clipboard del server e non del client che sta visualizzando il browser. Supponevo dovessi "passare" dei dati tra due pagine server o tra due processi utilizzando la Clipboard per comodità.

     

    Per usare la Clipboard nel contesto di un browser su una pagina ASP.NET - come per qualsiasi altra pagina il cui output è HTML - devi utilizzare Javascript. Ad esempio, su questa pagina trovi un'ottimo spunto che illustra come copiare un immagine:

    <script type="text/javascript">
    function copyTo(sImgID) {
    var ctrlRange = document.body.createControlRange(); ctrlRange.add(document.all(sImgID)); ctrlRange.execCommand("Copy"); } </script>

    <body onload="copyImage('IMAGE')">

    Un esempio con il testo:

    <html>

    <head>
    <script type="text/javascript">
    function doIt() {
      var x=document.getElementById('dajm');    
      document.form.copyArea.value=x.innerText;
      y = document.form.copyArea.createTextRange();
      y.select();
      y.execCommand("Copy");
    }
    </script>
    </head>

    <body>

    <p>Outside Div</p>
    <div id="dajm">
      Inside Div Content
    </div>
    <form name="form">
      <input type="hidden" name="copyArea" value><input type="button" value="Copy to Clipboard" onclick="doIt()">
    </form>
    <p>Outside Div</p>

    </body>
    </html>

    E, infine, per la copia di un intero DIV contenente testo ed immagini, che può essere incollato ad esempio in Word:

    var div = document.getElementById('divId');
    div.contentEditable = 'true'; var controlRange;
    if (document.body.createControlRange) {
      controlRange = document.body.createControlRange();
      controlRange.addElement(div);
      controlRange.execCommand('Copy');
    }
    div.contentEditable = 'false';
    Archiviato in: ,
    • Log
Pagina 1 di 1 (7 elemento/i)
Prelevato da http://www.devspy.com/forums/p/4715/5932.aspx
DevSpy.com 6.0 © 2001-2008 - Alcuni Diritti Riservati
Salvo diversa indicazione, tutti i contenuti sono pubblicati sotto licenza "Creative Commons Attribution-Share Alike 3.0"