Posts Tagged ‘ grafica’

Un semplice CAPTCHA per Asp.Net

{ Inserito il 12 set 2013 da maury }
Tags : , , , , ,
Categorie : Generico

Per proteggere un form asp.net in modo che possa essere inviato solo se c’è un “umano” e blocchi così gli script automatici si usano delle tecniche chiamate di “CAPTCHA” termine difficile per dire che deve essere inserita un’informazione che richiede un minimo di “comprensione”. Questa “domanda”, per complicare un po’ la vita ad uno script, dovrebbe essere mostrata nella pagina come immagine e non come testo.

Alla ricerca della soluzione più sem plice possibile ho trovato questa semplice strategia:

1-nel Page_Load se non è un postback creo una qualche “scritta” e salvo nel ViewState il “risultato previsto” (verificate che sia abilitata la cifratura del ViewState)

string _domanda = "testo da mostrare";
ViewState["risultato"] = _risultato;

2-ovviamente dop il PostBack recupero il valore

if (ViewState["risultato"] != null)
  _risultato = (string)ViewState["risultato"];

3-alla fine del Page_Load devo mostrare nella pagina la “domanda”, non volenod generar eun’immaigne e salvarla su disco o creare un httphandler, scelgo di usare il formato “base64″ embedded per il src dell’immagine:

Bitmap oBitmap = new Bitmap(80, 22);
Graphics oGraphics = Graphics.FromImage(oBitmap);
Brush oBrush = new SolidBrush(Color.White);
oGraphics.FillRectangle(oBrush, 0, 0, 100, 40);

Brush oBrush2 = new SolidBrush(Color.Black);
oGraphics.DrawString(
  _risultato, 
  new Font("Arial", 13, FontStyle.Italic),
  oBrush2,
  new Point(5, 1));

/*BASE64*/
string base64String = string.Empty;
MemoryStream memoryStream = new MemoryStream();
oBitmap.Save(memoryStream,
    System.Drawing.Imaging.ImageFormat.Jpeg);
memoryStream.Position = 0;
byte[] byteBuffer = memoryStream.ToArray();
memoryStream.Close();

base64String = Convert.ToBase64String(byteBuffer);
byteBuffer = null;

imgCaptcha.Attributes["src"] = 
    "data:image/jpeg;base64," + base64String;

e alla fine nell’evento “Click” del pulsante verificare che il “risultato” sia proprio quello previsto:

if (txtRisultato.Text) == _risultato)
Leggi »

Animazione di linee in Html 5 Canvas

{ Inserito il 12 set 2012 da maury }
Tags : , , ,
Categorie : Generico

I Canvas di Html5 servono per disegnare sulle pagine web e sono molto semplici da usare, basta inserirne uno nel codice html

<canvas id="myCanvas" width="200" height="100"></canvas> 

e poi tramite Javascript disegnare qualcosa, per esempio una linea:

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.moveTo(0,0);
ctx.strokeStyle = "#ff0000";
ctx.lineTo(100,100);
ctx.stroke();

ma se invece volessimo disegnare la linea “lentamente” animandola? Dopo giorni di ricerche convulse su Google ho scoperto che questa funzionalità è presente nel comando “animate” di SVG (l’alternativa ai Canvas ma non supportata da tutti i browser).

L’unica soluzione trovata è costruirsi la funzione da soli usando un po’ di geometria analitica e rispolverando qualche formula di matematica.

MOSTRA IL CODICE….

Leggi »

Cos’è una “Texture” ?

{ Inserito il 01 ott 2010 da maury }
Tags : , ,
Categorie : Definizioni

Nel web con la parola “Texture” si indica un’immagine che presenta un motivo ripetuto; queste immagini vengono spesso utilizzate come sfondi di pagine web, o per decorare elementi particolari. Gli oggetti che si prestano particolarmente bene a questo scopo sono i muri, i tessuti, il legno o anche le lamiere metalliche.

Leggi »