tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
23
ZUGRIFFE
4148
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    Hallo,

    Bin jetzt von VB 6.0 auf .Net umgestiegen. Ich arbeite im Moment noch mit der Express version bis ich die Standard habe. Aber hier meine Frage:

    Ist es möglich, in einem ins Programm geladene Bild mittels dem Mauszeiger Abstände darin zu messen? Theoretisch ist das ja ganz einfach, man muss nur die Koordinaten von den zwei Mausklicks mit Phytagoras umrechnen und fertig. Aber wie mache ich das in .NET?

    Hinterher soll dann mittels Umrechnungsfaktor aus den Pixelabständen Längeneinheiten gemacht werden.

    Kann mir da jemand weiterhelfen?
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Worin genau liegt dein Problem?

    a) Herausfinden der Koordinaten?
    b) Berechnung / Umrechnung?
     

  3. #3
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    Hallo,

    Bin inzwischen schon etwas weitergekommen. Ich dachte, hier würde gar keiner antworten, also schon mal danke.

    Also folgendes will ich machen:

    Es soll ein Bild von einer Kamera uÄ. importiert werden. Erst einmal nehme ich nur die Datei, hinterher werde ich die Kamera fernsteuern, aber das hat noch Zeit.

    Ich habe jetzt erst einmal zwei Labels erzeugt, die bei MoveMouse die Koordinaten X / Y im Bild anzeigen. Das ist eine PictureBox. Das klappt auch schon. Die entfernungen berechne ich mit Phytagoras, nachdem ich per Mausklick 2 Koordinatenpunkte selektiert habe.

    Das ist auch alles schon programmiert, also kein Problem. Aber nun das wichtigste:

    Damit das Ganze benutzerfreundlich wird, soll nach Klick (Selektion) des ersten Punktes von diesem Punkt eine Linie mit der Maus verbunden werden, die immer an der Zeigerspitze hängt, bis der Benutzer einen zweiten Punkt ausgewählt hat.

    Das ist mein Problem, theoretisch kein Problem, aber da ich in .NET neu bin..

    DANKE
     

  4. #4
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Zitat Zitat von Terminator2 Beitrag anzeigen
    Damit das Ganze benutzerfreundlich wird, soll nach Klick (Selektion) des ersten Punktes von diesem Punkt eine Linie mit der Maus verbunden werden, die immer an der Zeigerspitze hängt, bis der Benutzer einen zweiten Punkt ausgewählt hat.
    Sollte nicht so schwer sein. Zeichne bei jedem MouseMove Ereignis einen Pfeil vom Ausgangs- bis zum Endpunkt.
    Schau Dir mal dieses nette Projekt an: C#: A-Star is born - Understand graphs and A* path-finding algorithm with C# - TheCodeProject.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  5. #5
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    hört sich einfacher an als es ist

    Warum ist das denn so komplex? Mein Problem ist weniger das, wie ich zeichne, sondern mehr, wo der Code rein muss. Bei .NET sind die Deklarationen ja wieder ganz anders. Ich habe hier einen Code, wo alles wichtige drinnen ist, nur an falscher Stelle:

    Hier mein aktuelles Programm *g*
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Public Class Form1
     
        Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
            Label1.Text = e.X
            Label2.Text = e.Y
        End Sub
    End Class

    Das mache ich mir der GDI+ (Was auch immer das ist)

    Hier der Zeichen-Befehl
    Code :
    1
    
    myGraphics.DrawLine(myPen, 4, 2, 12, 6)

    Die Graphics-Klasse?!
    Code :
    1
    2
    3
    
    Public NotInheritable Class Graphics
        Inherits MarshalByRefObject
        Implements IDeviceContext, IDisposable

    und ihre Verwendung:
    Code :
    1
    
    Dim instance As Graphics

    Jetzt noch die Pen-Klasse
    Code :
    1
    2
    3
    
    Public NotInheritable Class Pen
        Inherits MarshalByRefObject
        Implements ICloneable, IDisposable

    und auch ihre Verwendung:
    Code :
    1
    
    Dim instance As Pen

    Wer mir das jetzt zusammenbastelt, sodass ich immer von einem Punkt (könnt ihr euch aussuchen, den verknüpfe ich später selbst, bis zum Mauszeiger eine Linie habe, dem poste ich ein nettes Smilie

    Also schonmal Danke
     

  6. #6
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    Hallo,

    Habe jetzt was bei Microsoft gefunden, was funtkioniert:

    Code :
    1
    2
    3
    4
    5
    6
    
        Private Sub picturebox1_paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
            Dim p As New Pen(Color.Black)
            Dim g As Graphics = e.Graphics
            ' Eine Linie von (0,0) zu (500,500) zeichnen 
            g.DrawLine(p, 0, 0, 500, 500)
        End Sub

    Das Problem ist aber, dass diese Linie nur beim Erstellen des Fensters gezeichnet wird, aber ich brauche eine, die nach Mausklick die Maus vom Klickursprung verfolgt. Das ist ja in jedem einfachen Zeichenprogramm möglich...
     

  7. #7
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    So, ich hab Dir schnell mal eine kleine Demo gemacht. Hier mal ein Auszug aus dem Control was ich erstellt habe. Ich hab hier einiges bewusst weggelassen.
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    
    public class MyCustomOwnerDrawnControl : Control
    {
        /**/
        // Definieren der nötigen Objekte.
        Point
            m_point = Point.Empty,
            m_mousePoint = Point.Empty;
     
        Pen m_pen;
     
        public MyCustomOwnerDrawnControl( IContainer container )
        {
            /**/
     
            Init();
        }
     
        void Init()
        {
            // ControlStyle auf händisches Zeichnen einstellen. Dies kann man nur innerhalb des Construktor-Aufrufs.
            // Zusätzlich siehst noch diverse Einstellungen die denke ich mal selbsterklärend sind.
            SetStyle(
                ControlStyles.UserPaint |
                    ControlStyles.AllPaintingInWmPaint /*|
                    ControlStyles.DoubleBuffer |*/
                    /*ControlStyles.ResizeRedraw*/,
                true );
        }
     
        // Wenn linke Maustaste gedrückt werden die Koordinaten gespeichert.
        protected override void OnMouseDown( MouseEventArgs e ) und der Pen initialisiert.
        {
            if( e.Button == MouseButtons.Left ){
                m_point.X = e.X;
                m_point.Y = e.Y;
                m_pen = new Pen( Color.Black );
            }
            base.OnMouseDown( e );
        }
     
        // Wenn linke Maustaste los gelassen werden die Koordinaten gelöscht.
        // Ganz wichtig! Immer das Pen Objekt nach der Verwendung disposen,
        // um Speicher zu sparen.
        protected override void OnMouseUp( MouseEventArgs e )
        {
            if( e.Button == MouseButtons.Left ){
                m_point = Point.Empty;
                m_pen.Dispose();
                m_pen = null;
            }
            base.OnMouseUp( e );
        }
     
        // Bei jeder Bewegung der Maus wird die Position gespeichert und das Zeichnen des Controls ausgelöst.
        protected override void OnMouseMove( MouseEventArgs e )
        {
            m_mousePoint = new Point( e.X, e.Y );
            base.Invalidate();
        }
     
        // Zeichnet die Linie sofern die linke Maustaste gedrückt wurde.
        protected override void OnPaint( PaintEventArgs e )
        {
            if( m_point == Point.Empty || m_pen == null )
                return;
            e.Graphics.DrawLine( m_pen, m_point, m_mousePoint );
            base.OnPaint( e );
        }
    }
    Angehängte Dateien Angehängte Dateien
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  8. #8
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    Hi,

    alle achtung, haste ja perfekt hinbekommen. Ich versuche mal das irgendwie in mein VB.NET zu importieren?!

    Ich hab nämlich keine Ahnung ob und wie das geht...

    Also erstmal Danke für das schöne Programm. Kann man das Ganze denn auch in einer PictureBox machen? müsste doch gehen, oder?


    mfg
     

  9. #9
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Damit kannst Dir das auch in VB.NET anschauen :
    Wichtig: C# zu VB.net, und umgekehrt.. - Stickie
    Reflector for .NET

    //Edit: Klar kannst das auch mit einer PictureBox machen. Tausche einfach den Typ Control, von dem MyCustomOwnerDrawnControl ableitet, genen den Typ PictureBox aus. Die PictureBox basiert ja auf dem Typ Control.

    //Edit: Weist Du eigentlich, wie Du in dein VS benutzdefinierte Steuerelemente einbindest, damit Du sie aus der ToolBox in den Designer "ziehen" kannst?
    Geändert von Christian Kusmanow (28.02.07 um 16:34 Uhr)
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  10. #10
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    Hi,

    Also einfach gesagt: Ich weiß gar nichts bis auf VB6.0
    Kommt drauf an was du meinst. Also ich kenne diese Controls wie zB. Timer usw.
    Aber ich habe mit Visual Studio noch gar nichts programmiert, außer eine PictureBox mit Koordinatenanzeige.

    Werde das gleich mal ausprobieren.

    mfg
     

  11. #11
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    Hallo,

    Also ich habe mir jetzt die Augen wund gesucht. Ich habe zwar herausgefunden, wie man diese Toolbox anpassen kann, aber diese .resx Datei kriege ich nicht in mein .NET. Kannst du mir das vll. mal zeigen?

    mfg
     

  12. #12
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    1. Control erstellen und Projekt kompilieren
    2. Rechtsklick auf ToolBox->Add/Remove Items...
    3. Auf Browse... klicken.
    4. Exe/Assembly auswählen
    5. Component auswählen
    6. Fertig
    Building Windows Forms Controls and Components with Rich Design-Time Features - MSDN
    Visual Studio 2005 Toolbox Utility - TheCodeProject
    Adding Custom Controls to Visual Studio.Net Toolbox Programatically - TheCodeProject
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  13. #13
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    So, malwieder ein Doppelpost

    Also, es gibt Neuigkeiten. Habe jetzt nochmal ganz in Ruhe alles in VB.NET gewandelt und dann mal den Debugger genauer unter die Lupe genommen. Hier die Fehlermeldung im Ausgabe-Debugger:

    Die letzten Zeilen sind interessant:
    (Da soll wohl Form1 in dem Code vieldeutig sein, aber ich weiß nicht warum?)

    Code :
    1
    2
    3
    4
    5
    
    ------ Erstellen gestartet: Projekt: PaintLineDemo, Konfiguration: Debug Any CPU ------
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe /noconfig /imports:Microsoft.VisualBasic,System,System.Collections,System.Collections.Generic,System.Data,System.Drawing,System.Diagnostics,System.Windows.Forms /nowarn:42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 /rootnamespace:PaintLineDemo /doc:obj\Debug\PaintLineDemo.xml /define:"CONFIG=\"Debug\",DEBUG=-1,TRACE=-1,_MyType=\"WindowsForms\",PLATFORM=\"AnyCPU\"" /reference:..\..\..\..\PaintLineDemo\bin\Debug\PaintLineDemo.exe,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Deployment.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /main:PaintLineDemo.My.MyApplication /debug+ /debug:full /out:obj\Debug\PaintLineDemo.exe /resource:obj\Debug\PaintLineDemo.PaintLineDemo.Form1.resources /resource:obj\Debug\PaintLineDemo.Resources.resources /target:winexe Form1.vb Form1.Designer.vb "My Project\AssemblyInfo.vb" "My Project\Application.Designer.vb" "My Project\Resources.Designer.vb" "My Project\Settings.Designer.vb"
    InternalMyTemplate.vb(16707566) : error BC30560: 'Form1' is ambiguous in the namespace 'PaintLineDemo'.
    InternalMyTemplate.vb(16707572) : error BC30560: 'Form1' is ambiguous in the namespace 'PaintLineDemo'.
    ========== Build: 0 erfolgreich oder aktuell, Fehler bei 1, 0 übersprungen ==========

    Hier nochmal mein aktueller Quellcode:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    
    Imports System
    Imports System.Drawing
    Imports System.Collections
    Imports System.ComponentModel
    Imports System.Windows.Forms
    Imports System.Data
     
    Namespace PaintLineDemo
        ''' <summary>
        ''' Summary description for Form1.
        ''' </summary>
        Public Class Form1
            Inherits System.Windows.Forms.Form
            Private myCustomOwnerDrawnControl1 As MyCustomOwnerDrawnControl
            Private components As System.ComponentModel.IContainer
     
            Public Sub New()
                '
                ' Required for Windows Form Designer support
                '
     
                '
                ' TODO: Add any constructor code after InitializeComponent call
                '
                InitializeComponent()
            End Sub
     
            ''' <summary>
            ''' Clean up any resources being used.
            ''' </summary>
            Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
                If disposing Then
                    If components IsNot Nothing Then
                        components.Dispose()
                    End If
                End If
                MyBase.Dispose(disposing)
            End Sub
     
    #Region "Windows Form Designer generated code"
            ''' <summary>
            ''' Required method for Designer support - do not modify
            ''' the contents of this method with the code editor.
            ''' </summary>
            Private Sub InitializeComponent()
                Me.components = New System.ComponentModel.Container
                Me.MyCustomOwnerDrawnControl2 = New PaintLineDemo.MyCustomOwnerDrawnControl(Me.components)
                Me.SuspendLayout()
                '
                'MyCustomOwnerDrawnControl2
                '
                Me.MyCustomOwnerDrawnControl2.Location = New System.Drawing.Point(-1, -2)
                Me.MyCustomOwnerDrawnControl2.Name = "MyCustomOwnerDrawnControl2"
                Me.MyCustomOwnerDrawnControl2.Size = New System.Drawing.Size(294, 245)
                Me.MyCustomOwnerDrawnControl2.TabIndex = 0
                Me.MyCustomOwnerDrawnControl2.Text = "MyCustomOwnerDrawnControl2"
                '
                'Form1
                '
                Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
                Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
                Me.ClientSize = New System.Drawing.Size(292, 266)
                Me.Controls.Add(Me.MyCustomOwnerDrawnControl2)
                Me.Name = "Form1"
                Me.Text = "David"
                Me.ResumeLayout(False)
     
            End Sub
    #End Region
     
            ''' <summary>
            ''' The main entry point for the application.
            ''' </summary>
            <STAThread()> _
            Private Shared Sub Main()
                Application.Run(New Form1())
            End Sub
            Friend WithEvents MyCustomOwnerDrawnControl2 As MyCustomOwnerDrawnControl
        End Class
    End Namespace

    mfg
     

  14. #14
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Mach es doch mal anders. Übertrag das was Du im Reflector stehen hast händisch in VB. So hast auch einen größeren Lerneffekt. Btw. ist das Beispielprojekt in .NET 1.1. Auf Arbeit habe im Moment leider nichts anderes zur Verfügung.

    Ausserdem sehe ich nur ein Form. Das Control fehlt.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  15. #15
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    hi,

    sry, keine Ahnung. Ich habe den Code ja von Hand reinkopiert. Aber ich blick da nich mehr durch.

    Ich habe jetz einfach mal alle Form1 auf Form2 geändert, inkl. Namen der Form. Und jetzt macht er nicht mehr diesen Fehler in der Ausgabe, nur funktionieren tuts trotzdem nicht. Jetzt habe ich in dem Code überall Fehler:

    Application.myapp
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    <?xml version="1.0" encoding="utf-8"?>
    <MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <MySubMain>true</MySubMain>
      <MainForm>Form2</MainForm>
      <SingleInstance>false</SingleInstance>
      <ShutdownMode>0</ShutdownMode>
      <EnableVisualStyles>true</EnableVisualStyles>
      <AuthenticationMode>0</AuthenticationMode>
      <ApplicationType>0</ApplicationType>
      <SaveMySettingsOnExit>true</SaveMySettingsOnExit>
    </MyApplicationData>

    Zu jeder Zeile kommt da die Meldung:
    "Die Schemainformationen für das Element "..." konnten nicht gefunden werden."

    Was soll denn das schon wieder?

    mfg
     

Ähnliche Themen

  1. <hr> and Abstände
    Von wachteldonk im Forum CSS
    Antworten: 1
    Letzter Beitrag: 11.09.07, 10:47
  2. Abstände DIV im IE
    Von tinella im Forum CSS
    Antworten: 3
    Letzter Beitrag: 03.11.06, 16:51
  3. ul > li > ul > li Abstände im IE?
    Von Dalerion im Forum CSS
    Antworten: 4
    Letzter Beitrag: 10.05.06, 19:25
  4. 3D-Koordinaten in 2D-Koordinaten umrechnen
    Von mamarulez im Forum Sonstige Sprachen
    Antworten: 3
    Letzter Beitrag: 23.05.05, 22:54
  5. Abstände zw. p und /p Tag
    Von ultrakollega im Forum HTML & XHTML
    Antworten: 4
    Letzter Beitrag: 01.07.03, 12:12