Frage

Ich bin neu mobile Entwicklung und ich arbeite an einer Proof of Concept-Anwendung auf Windows Mobile 6.0 Os und CF 2.0

Ich habe versucht, neuen backgorund zu entwerfen für meine Anwendung mit dem Adobe Photoshop, fand ich ein Tutorial auf der codeproject.com über das Windows Mobile-Vollbild-Problem und App-Image-Hintergrund Problem mit Pinvoke api Lösung nach Dr.Luiji der iPhone UI in Windows mobile Artikel

Als ich versuchte Form Hintergrund einig Gradienten Bild hinzuzufügen. alt text http://img268.imageshack.us/img268/8482/ppc2.jpg

Die Bildqualität scheint schlecht. Aber ich versuchte, ein anderes Hintergrundbild zu meiner Form Hintergrund hinzuzufügen, so scheint es gut.

alt text http://img199.imageshack.us/img199/9812/ppc3 .jpg

Ich verstehe nicht, wo das Problem ist, habe ich versucht zu BMP, PNG mein backgorund Bild zu ändern, jpg usw. es immer noch schlecht. Was mache ich Fehler mit photoshop?
(Anmerkung:.? Auf der anderen Seite, ich habe diesen Entwurf auf echte PocketPC noch nicht ausprobiert ist es nicht)

Allerdings Mein anderes wirkliches Problem ist OnPaintBackground Methode auf den mobilen Formen. wie ich oben geschrieben habe ich Pinvoke api zum Zeichnen von Vollbild-Formen verwendet. Hier ist der Beispielcode:

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);

        }

    }
}

Ich versuche, einige Steuerelemente auf dem Formular hinzufügen dann angezeigt Kontrollen transparent, wenn die Anwendung zum ersten Mal ausgeführt werden. Wenn Sie versuchen, den Cursor über die diese Kontrollen zu bewegen, werden diese drehen normal.

Was kann ich für dieses Problem zu lösen?

Danke.

alt text http://img508.imageshack.us/img508/6717/ppc1 .jpg

War es hilfreich?

Lösung

Zu allererst Ihr Code muss einige aufzuräumen:

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);
             }
        }
    }
}

Chris Tacke klassischer Blog spricht über Bitmaps in den CF. Sie müssen vorsichtig sein:

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

Nach alldem, ich bin nicht wirklich sicher, was Ihre Frage ist. Könnten Sie das konkretisieren? Wie zum Beispiel, sehe ich keinen P / Invokes, aber Sie sagen, Sie einige verwendet. Wo sind sie?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top