Hay ocasiones donde es necesario guardar un uielement como imagen. A un uielement me refiero a un stackpanel, grid , button , textbox o cualquier otro control en una aplicación de windows phone. Para realizar dicha tarea debemos hacer uso de la clase WriteableBitmap que forma parte del namespace "System.Windows.Media.Imaging".
Ahora empezaremos creando una pequeña aplicación y en nuestra MainPage.xaml encontraremos el grid que tiene el nombre de "ContentPanel" y lo modificaremos agregando lo siguiente:
y nuestra UI se verá así:
Ahora controlaremos el evento click de nuestro boton para proceder a guardar el grid como imagen
Dentro de nuestro código behind crearemos un pequeño método
Una de las opciones indespensables que debe de contar toda aplicación es la ser capaz de guardar la configuración del usuario por ejemplo en mi app memegenerator tengo la siguiente pantalla:
pero ¿Cómo guardo la configuración de el usuario en windows phone 8?
La respuesta es sencilla tenemos que usar el almacenamiento aislado. Existen dos tipos de almacenamiento aislados.
El primero y el más simple es donde guardamos y recuperamos datos mediante una clave y valor (key and value) haciendo uso del la claseIsolatedStorageSettings que forma parte del namespace "System.IO.IsolatedStorage".
La segunda forma básicamente trata de guardar archivos haciendo uso de la clase IsolatedStorageFile que al igual forma parte del namespace "System.IO.IsolatedStorage".
Trabajando con el almacenamiento tipo clave valor
Yo he creado una clase que facilita la tarea de guardar la configuración de los usuarios y en está ocasión me gustaría compartirla.
Aquí les dejo la clase :)
public class SettingsHelper
{
///
/// Método para agregar una nueva key
///
/// Nombre único
/// Valor de la key
public static void addValue(string key, object value)
{
if (!IsolatedStorageSettings.ApplicationSettings.Contains(key))
{
IsolatedStorageSettings.ApplicationSettings.Add(key, value);
}
else
{
IsolatedStorageSettings.ApplicationSettings[key] = value;
}
}
///
/// Obtiene el valor que se estableció a la key
///
/// El nombré único
///
public static object getValue(string key)
{
object item = null;
if (IsolatedStorageSettings.ApplicationSettings.Contains(key))
{
item = IsolatedStorageSettings.ApplicationSettings[key];
}
return item;
}
///
/// Verifica si existe una key
///
/// El nombre único
///
public static bool existKey(string key)
{
if (IsolatedStorageSettings.ApplicationSettings.Contains(key))
{
return true;
}
return false;
}
///
/// Elimina una key
///
/// Nombre único
public static void removeKey(string key)
{
if (IsolatedStorageSettings.ApplicationSettings.Contains(key))
{
IsolatedStorageSettings.ApplicationSettings.Remove(key);
}
}
}
¿Cómo usar la clase?
vamos hacer algo sencillo y le enseñaré como ustedes pueden usar está clase.
Primero crearemos una nueva página y editaremos nuestro código xaml
En nuestro código behind agregaremos el siguiente código
//key
private String key = "nombre";
private void btnGuardar_Click(object sender, RoutedEventArgs e)
{
//Agregamos la key
SettingsHelper.addValue(key, txtNombre.Text);
}
private void btObtener_Click(object sender, RoutedEventArgs e)
{
//Verificamos si existe la key
if (SettingsHelper.existKey(key) == true)
{
//obtenemos el nombre
String nombre = SettingsHelper.getValue(key).ToString();
MessageBox.Show(String.Format("Tu nombre es {0}", nombre));
}
else
{
//mostramos mensaje que no ha guardado la key aún
MessageBox.Show("Aún no has guardado la key");
}
}
Finalmente aquí les dejo una captura del resultado que se muestra en la aplicación.
Espero y les sea de ayuda este conocimiento que estoy compartiendo con ustedes
En este articulo me gustaría aportarles la manera fácil de enviar datos de un form con jquery y ajax.
Comencemos con el código html que nos quedaría como el siguiente
Tutorial
Tutorial jquery, ajax y php
El formulario nos quedaría como el que se muestra a continuación:
Tutorial
Tutorial jquery, ajax y php
Ahora procederemos a crear nuestro script
$(document).ready(function() {
$("#formulario").submit(function(event){
event.preventDefault();
var request;
request=$.ajax({
type: "POST",
url: "enviar.php",
data: $(this).serialize()
});
//deshabilita los inputs cuando hacemos el request
var $inputs = $(this).find("input, select, button, textarea");
$inputs.prop("disabled", true);
//el request fue hecho con éxito
request.done(function (response, textStatus, jqXHR){
//mostramos la respuesta del request
alert(response);
});
// callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
//ocurrio un error
alert(
"Ha ocurrido el siguiente error "+
textStatus, errorThrown);
});
//función que siempre se ejecutará
request.always(function () {
// reenable the inputs
$inputs.prop("disabled", false);
//limpia el formulario
document.getElementById("formulario2").reset();
});
});
});
Finalmente nuestro código php
0)
{
//obtenemos el nombre
$nombre=$_POST['nombre'];
//obtenemos la edad
$edad=$_POST['edad'];
echo 'Bienvenido '.$nombre.' tu edad es: '.$edad;
}