MdiParent- wypełnienie formy

Odpowiedz Nowy wątek
2007-11-04 01:17

Rejestracja: 12 lat temu

Ostatnio: 2 tygodnie temu

Lokalizacja: Warszawa

0

Witam

Chciałbym na formie MDI - umieścić kilka rysunków i tekstów (Takie tło mówiące do czego służy program)
Problem polega na tym że jak umieszczę coś na formie MDI to po otwarciu okien potomnych umieszczone elementy znajdują się przed tymi formami.

Mam pytanie jak można zrobić żeby umieszczone elementy były za otwieranymi oknami.


Nauka ASP MVC

Pozostało 580 znaków

2007-11-04 14:32

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

0

rysuj je w OnPaint - taki efekt to przypadłość MDI i np. w Delphi jest tak samo


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2007-11-04 21:17

Rejestracja: 12 lat temu

Ostatnio: 2 tygodnie temu

Lokalizacja: Warszawa

0

Napisałem fragment programu tak i jest tak jak było nadal "label" na pierwszym planie:

private void MDIParent1_Paint(object sender, PaintEventArgs e)
        {
            System.Windows.Forms.Label Label;

                // Dodanie nowego Labela
                Label = new System.Windows.Forms.Label();
                Controls.Add(Label);
                // Ustawnienie wszystkich parametrów obiektu
                Label.AutoSize = true;
                Label.Location = new System.Drawing.Point(100, 100);

                Label.Size = new System.Drawing.Size(35, 13);
                Label.Text = "Tekst";           
        }

Może coś nie tak zrobiłem albo są jakieś inne pomysły na rozwiązanie mojego problemu ?


Nauka ASP MVC

Pozostało 580 znaków

2007-11-04 21:29

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

0

ale Ty dynamicznie tworzysz komponent w OnPaint a masz rysować tekst i/lub grafikę


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2007-11-04 21:55

Rejestracja: 12 lat temu

Ostatnio: 2 tygodnie temu

Lokalizacja: Warszawa

0

Mógłbyś podać jakieś polecenia opcjonalnie bibliotekę z której mógłbym skorzystać pisze program w Visual Studio 2005 net.
A no i mam pytanie czy to nie obciąża zbytnio programu (bardzo istotne bo to co pisze to program do obróbki dużej ilości danych.)


Nauka ASP MVC

Pozostało 580 znaków

2007-11-04 22:36

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

0
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        private Bitmap tlo;

        public Form1()
        {
            InitializeComponent();

            //przygotowanie obrazka z tłem
            //jeśli obrazek jest statyczny to wystarczy go raz narysować

            //stworzenie nowego obrazka o określonych rozmiarach
            tlo = new Bitmap(200, 200, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            //rectangle o wymiarach obrazka (pomocniczy)
            Rectangle r = new Rectangle(0, 0, tlo.Width, tlo.Height);

            Graphics g = Graphics.FromImage(tlo);
            //stworzenie gradientu
            System.Drawing.Drawing2D.LinearGradientBrush lgb = new System.Drawing.Drawing2D.LinearGradientBrush(r, Color.White, Color.Blue, 90f);
            //"narysowanie" gradientu
            g.FillRectangle(lgb, r);
            //"narysowanie" textu
            g.DrawString("Przykładowy napis", new Font("Times New Roman", 12, FontStyle.Bold), Brushes.Black, 10, 10);

            //znalezienie kontrolki, która jest MDI i dodanie do niej obsługi zdarzenia Paint
            //oraz Resize, żeby nie się odrysował po zmianie rozmiaru okna
            foreach (Control c in this.Controls)
                if (c is MdiClient)
                {
                    c.Paint += new PaintEventHandler(c_Paint);
                    c.Resize += new EventHandler(c_Resize);
                }
        }

        void c_Resize(object sender, EventArgs e)
        {
            ((MdiClient)sender).Invalidate();
        }

        void c_Paint(object sender, PaintEventArgs e)
        {
            //odrysowanie tła na formi
            e.Graphics.DrawImage(tlo, ClientRectangle);
        }
    }
}

- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2007-11-05 11:28

Rejestracja: 12 lat temu

Ostatnio: 12 lat temu

0

nie napisałeś, czy kontrolki chcesz tworzyc dynamicznie czy nie. Jesli nie, to zdaje się, że w VCSE2005 można to ustawic w properties która kontrolka ma byc nad ktora itp

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0