Pregunta

Soy un nuevo desarrollo móvil y estoy trabajando en una aplicación de prueba de concepto en Windows Mobile 6.0 Os y CF 2.0

Traté de diseñar un nuevo fondo para mi aplicación con Adobe Photoshop, encontré un tutorial en codeproject.com sobre cómo resolver el problema de pantalla completa de Windows Mobile y el problema de fondo de la imagen de la aplicación con la aplicación Pinvoke según la interfaz de usuario de iPhone en el artículo de Windows Mobile

Cuando intenté agregar el fondo del formulario alguna imagen de degradado. texto alternativo http://img268.imageshack.us/img268/8482/ppc2.jpg

La calidad de imagen parece pobre. Pero intenté agregar otra imagen de fondo a mi fondo de formulario, parece bueno.

texto alternativo http://img199.imageshack.us/img199/9812/ppc3 .jpg

No entiendo dónde está el problema, intenté cambiar mi imagen de fondo a bmp, png, jpg, etc., todavía es pobre. ¿Qué estoy haciendo error con photoshop?
(Nota: por otro lado, todavía no he probado este diseño en un bolsillo real. ¿No es así?)

Sin embargo, Mi otro problema real es el método OnPaintBackground en los formularios móviles. Como escribí anteriormente, he usado la API de Pinvoke para dibujar formularios de pantalla completa. Aquí está el código de muestra:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using Microsoft.WindowsMobile.Status;

namespace My_Mobile
{
    public partial class MainForm : Form
    {

        Globals _globals = new Globals();
        Graphics _gxBuffer;
        Bitmap _offsetBitmap;  

        Bitmap backgroundVertical = null;
        public MainForm()
        {
            InitializeComponent();
            backgroundVertical = new Bitmap(_globals.ApplicationPath + @"\Resources\wallpaper.bmp");
            _offsetBitmap = new Bitmap(this.Width, this.Height);

        }

        private void MainForm_Load(object sender, EventArgs e)
        {

        }


        protected override void OnPaintBackground(PaintEventArgs e)
        {
            //base.OnPaintBackground(e);
        }


        protected override void OnPaint(PaintEventArgs e)
        {
                _gxBuffer = Graphics.FromImage(_offsetBitmap);

                _gxBuffer.Clear(this.BackColor);

                _gxBuffer.DrawImage(backgroundVertical, 0, 0);
                this.Invalidate();

                e.Graphics.DrawImage(_offsetBitmap, 0, 0);

        }

    }
}

Estoy tratando de agregar algunos controles en el formulario, luego los controles se muestran transparentes cuando la aplicación se ejecuta por primera vez. Si intenta mover el cursor sobre estos controles, estos se activan normalmente.

¿Qué puedo hacer para resolver este problema?

Gracias.

texto alternativo http://img508.imageshack.us/img508/6717/ppc1 .jpg

¿Fue útil?

Solución

En primer lugar, su código necesita una limpieza:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using Microsoft.WindowsMobile.Status;

namespace My_Mobile
{
    public partial class MainForm : Form
    {

        Globals _globals = new Globals();

        Bitmap backgroundVertical = null;
        public MainForm()
        {
            InitializeComponent();
            backgroundVertical = new Bitmap(_globals.ApplicationPath + @"\Resources\wallpaper.bmp");
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
        }


        protected override void OnPaintBackground(PaintEventArgs e)
        {
            //base.OnPaintBackground(e);
        }


        protected override void OnPaint(PaintEventArgs e)
        {
             using (Bitmap buffer = new Bitmap(this.Width, this.Height))
             using (Graphics gfx = Graphics.FromImage(buffer))
             {
                gfx.Clear(this.BackColor);
                gfx.DrawImage(backgroundVertical, 0, 0);
                //this.Invalidate();  Don't call Invalidate here, it shouldn't be needed
                e.Graphics.DrawImage(buffer, 0, 0);
             }
        }
    }
}

El blog clásico de Chris Tacke habla sobre Bitmaps en el CF. Debes tener cuidado:

http: //blog.opennetcf .com / ctacke / PermaLink, guid, 987041fc-2e13-4bab-930a-f79021225b74.aspx

Después de todo eso, no estoy realmente seguro de cuál es tu pregunta. ¿Podría ser más específico? Como por ejemplo, no veo ninguna P / invocación, pero dijiste que usaste algunas. ¿Dónde están ellos?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top