Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von TNDAri
Thema: C# ircbot mit blowfishverschlüsselung
Am im Forum: Rund um die Programmierung

BlowCryp
FiSH Encryption

FiSH hats inne dll namens DH1080. Ich glaub das ist was du brauchst. Ich meine IRCs arbeiten mi BlowCrypt.

Thema: DirectX nutzen?
Am im Forum: Grafik und Sound

Gerade wenn du noch nie was mit DirectX gemacht hast, wirste es mit der MDX SDK leichter haben. Und 400mb is ja nun nicht wirklich die Welt

Thema: XNA Editor... aber wie?
Am im Forum: Grafik und Sound

Bau dir nen XNAPanel. Das PAnel erstellt einen GraphicsDevice für das Panel und dadrauf kannste mit XNA befehlen zeichnen.
Anleitungen gibts es zu hunderten im inet. einfach mal google anschmeissen.

Hier ist der Code für ein Panel aus meinem XNA 2D Engine vielleicht hilft das ja schon weiter:


namespace FlatEngine.Windows
{
    public class FERenderPanel : Panel
    {
        private GraphicsDevice mDevice;
        private SpriteBatch mSpriteBatch;
        private Timer mUpdateTimer;
        private FECamera mCamera;
        private FEScene mScene;
        private FEDummyServiceContainer mServices;
        private FEContentManager mContent;
        private bool mUpdateSprites;

        public FEScene Scene
        { get { return mScene; } }

        public FECamera Camera
        { get { return FECameraManager.ActiveCamera; } }

        public GraphicsDevice GraphicsDevice
        { get { return mDevice; } }

        public FEContentManager Content
        { get { return mContent; } }

        public bool UpdateSprites
        { get { return mUpdateSprites; } set { mUpdateSprites = value; } }

        public FERenderPanel( )
            : base( )
        {
            this.SetStyle( ControlStyles.AllPaintingInWmPaint, true );
            BorderStyle = BorderStyle.FixedSingle;

            this.Paint += new PaintEventHandler( Repaint );
            this.Resize += new EventHandler( ThisResize );
        }

        /// <summary>
        /// Initialize everything you need (Graphics, SpriteBatch, Scene...)
        /// </summary>
        public void InitializeGraphics(  )
        {

            // Setup the Device
            PresentationParameters pp = new PresentationParameters( );
            pp.BackBufferCount = 1;
            pp.IsFullScreen = false;
            pp.SwapEffect = SwapEffect.Discard;
            pp.BackBufferWidth = this.Width;
            pp.BackBufferHeight = this.Height;

            pp.AutoDepthStencilFormat = DepthFormat.Depth24Stencil8;
            pp.EnableAutoDepthStencil = true;
            pp.PresentationInterval = PresentInterval.Default;
            pp.BackBufferFormat = SurfaceFormat.Unknown;
            pp.MultiSampleType = MultiSampleType.None;

            mDevice = new GraphicsDevice( GraphicsAdapter.DefaultAdapter, DeviceType.Hardware,
                this.Handle, CreateOptions.HardwareVertexProcessing, pp );

            mServices = new FEDummyServiceContainer( mDevice );

            mContent = new FEContentManager( mServices );

            mCamera = new FECamera( );
            FECameraManager.AddCamera( mCamera, "default" );
            FECameraManager.SetCamera( "default" );

            mScene = new FEScene( );

            mSpriteBatch = new SpriteBatch( mDevice );
            mUpdateSprites = false;
            ResetGraphics( );
        }

        public void LoadGraphicsContent( FESprite sprite )
        {
            if ( sprite is IFELoadable )
                ( (IFELoadable)sprite ).LoadGraphicsContent( mDevice, mContent );
        }

        public void LoadGraphicsContent( )
        {
            mScene.LoadGraphicsContent( mDevice, mContent );
        }

        private void ResetGraphics( )
        {
            if ( mUpdateTimer == null )
            {
                mUpdateTimer = new Timer( );
                mUpdateTimer.Interval = 16;
                mUpdateTimer.Tick += new EventHandler( UpdateTimerTick );
            }

            mUpdateTimer.Enabled = false;

            if ( this.Width == 0 || this.Height == 0 )
                return;

            mDevice.PresentationParameters.BackBufferWidth = this.Width;
            mDevice.PresentationParameters.BackBufferHeight = this.Height;

            Camera.Origin = new Vector2( this.Width / 2, this.Height / 2 );

            mDevice.Reset( );

            mUpdateTimer.Enabled = true;

            Repaint( null, null );
        }

        public virtual void Repaint( object sender, PaintEventArgs e )
        {
            if ( mDevice != null )
            {
                mDevice.Clear( new XNAColor( this.BackColor.R, this.BackColor.G, this.BackColor.B ) );

                mScene.Draw( mDevice, mSpriteBatch );

                mDevice.Present( );
            }
        }

        private void ThisResize( object sender, EventArgs e )
        {
            if ( mDevice != null )
                ResetGraphics( );

            Repaint( null, null );
        }


        private void UpdateTimerTick( object sender, EventArgs e )
        {
            if ( mScene != null && mUpdateSprites )
            {
                GameTime gt = new GameTime( TimeSpan.Zero, TimeSpan.Zero, TimeSpan.Zero, TimeSpan.FromMilliseconds( 16 ) );
                mScene.Update( gt );
            }

            Repaint( null, null );
        }

        public void BeginUpdate( )
        {
            mUpdateTimer.Enabled = false;
        }

        public void EndUpdate( bool init )
        {
            if ( init )
            {
                mScene.Initialize( );
                mScene.LoadGraphicsContent( mDevice, mContent );
            }

            mUpdateTimer.Enabled = true;
        }
     
    }
}

Das wichtigste ist wohl der DummyContainerService:

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace FlatEngine.Windows
{
    internal class FEDummyServiceContainer : IServiceProvider, IGraphicsDeviceService
    {
        private GraphicsDevice mDevice;

        public FEDummyServiceContainer( GraphicsDevice device )
        {
            mDevice = device;
        }

        #region IServiceProvider Member

        public object GetService( Type serviceType )
        {
            if ( serviceType == typeof( IGraphicsDeviceService ) )
                return this;

            return null;
        }

        #endregion
        
        #region IGraphicsDeviceService Member

        public event EventHandler DeviceCreated;
        public event EventHandler DeviceDisposing;
        public event EventHandler DeviceReset;
        public event EventHandler DeviceResetting;

        public GraphicsDevice GraphicsDevice
        {
            get { return mDevice; }
        }

        #endregion
    }
}

Thema: Fehler beim starten von MCI
Am im Forum: Grafik und Sound

Lad dir mal hier den sample code runter und schau ob der funzt.

Ich weis ja nciht obs relevant ist aber seid wann ist eine mp3 datei ein mpegvideo??? Das is doch ne MediaFile.

Thema: Ende eines Drag-and-Drop-Vorgangs feststellen
Am im Forum: GUI: Windows-Forms

Hmmm, ich hab erst gedacht du machst nen einfachen Drag&Drop. Nachdem ch mir jetzt aber nochmal deinen Text durch gelesen habe, versteh ich nur Bahnhof.
Wenn ein Object per Drag&Drop gecancelt wird, dann ind die Variablen leer. Wenn es nicht gecancelt wird, löst dein TreeView ein OnDragOver event aus, in dem du schauen kannst, welche DatenTyp das Drag item hat.
Was willst du jetzt anders haben? Den DatenTyp den der Explorer mit schickt?

Thema: SendKeys wird doppelt ausgeführt
Am im Forum: GUI: Windows-Forms

SendMessage ist ne API funktion. Benutz mal du SuFu vom Forum oder such bei pinvoke.net

Thema: Screenshot erzeugen
Am im Forum: Grafik und Sound

Im grunde ja nur du hast überflüssigen Code drinne:

            Graphics tempGraphic = Graphics.FromImage(skaliereBild);
            tempGraphic.DrawImage(skaliereBild, 0, 0);

Die Zeilen könenn weg, brauchst das skallierte Bild nciht noch einmal über das skallierte Bild malen

Thema: GetPixel und SetPixel um Längen geschlagen. 800 mal schneller
Am im Forum: .NET-Komponenten und C#-Snippets

GDI32 GetPixel und SetPixel sind ebenfalls so schnell
Dein Code ist aber super. Die ganzen Funktionen sind nicht neu und GDI32 hat sie schon alle intus, aber es mal vereinfachter für den faulen GDI+ programmierer zu machen find ich klasse

Thema: Graphics Seltsame probleme beim Scrollen
Am im Forum: Grafik und Sound

Weiss ja nicht wie dein Update verhalten ist. Wenn du einfach immer auf das poanel wieder rauf malst, ohne den hintergrund zu löschen, ist es klar das fehler auftreten. Scrollen resizen usw sind etwas tricky wenns um GDI geht. Immer das alte rect löschen bzw neu malen, dann das neue zeichnen.

Thema: Graphics Seltsame probleme beim Scrollen
Am im Forum: Grafik und Sound

Screenie und Code wären aber hilfreich

Thema: SendKeys wird doppelt ausgeführt
Am im Forum: GUI: Windows-Forms

Hatte mit der SendKeys klasse auch meine Probleme. Hab mich dann auch nciht weiter mit auseinander gesetzt. Bin dann auf SendMessage umgesteigen und das funzt 100%tig.

Schau mal in der MSDN nach SendMessage.

Thema: Eure Lieblingsspiele aus den alten C64 und Amiga Zeiten
Am im Forum: Smalltalk

Tjo, ich fall mal aus der reihe! Hatte nie einen Amiga
Hab mit nem CPC angefangen (schön mit Kasetten Laufwerk) und da tag und nacht Mr. Puniverse geadddelt (ich spiels heut noch, der CPC steht noch bei mir im Schrank )
Danach kam dann ein Schneider PC mit sagnhaften 512 KB RAM und irgendwas um die 2 MHz (das waren noich zeiten). Auf dem wurde dann fast nur Leisure Suite Larry gedaddelt

Thema: ListView nach Items durchsuchen
Am im Forum: GUI: Windows-Forms

Das könnte nur zu prblemen führen, wenn du 2 Items mit dem gleichen Text hast.

Thema: Programmnavigations-Control wie in Outtlook
Am im Forum: GUI: Windows-Forms

Ich hab sowas schonmal selber geschrieben. Ich schau mal ob ich den Code iregndwo finden kann.
Ansonsten, so ein Ctrl selber zu schrieben ist nciht wirklich schwer. Es besteht ja "nur" aus einem Panel, den Kategorie Buttons und den Item Buttons für jede Kategorie. Musst es halt etwas schön vom Code ausrichten lassen.

Thema: TextEditor neu erfinden?
Am im Forum: GUI: Windows-Forms

Der Link funktioniert. Thx.
Hat mir auch ein stoß in eine andere Richtung gegeben

Thema: TextEditor neu erfinden?
Am im Forum: GUI: Windows-Forms

Zitat von dr4g0n76
...dort gibt es auch einen Verweis auf ein PDF in dem vieles noch einmal genauer beschrieben ist...

Die PDF ist defekt, bzw kann ich nicht mit adobe reader anschauen

Thema: Kleinste Form ...
Am im Forum: GUI: Windows-Forms

hinter InitializeComponents() im ctor des forms einfach

this.Size = new Size( 2,2 );
einfügen.

Thema: TextEditor neu erfinden?
Am im Forum: GUI: Windows-Forms

Moinsen!

Ich habe mir vorgenommen ein Editor in c# schreiben der Syntax Highlight, Grid usw unterstützt. RichTextBox is mir zu lahm bei mehr als 1000 zeilen.
Ich habs auch soweit hin gekriegt, text zu schreiben, scrollen usw alles wie die TextBox. "Gemalt" wird alles per GDI (nicht GDI+). Syntax Highlight funktioniert auch ansatz weise, ist aber noch nciht ausgereift.
Soweit so gut, da der code erstmal zu testzwecken geschrieben ist und damit sehr unsauber und absolut nicht gut lesbar ist, muss ich sowieso nochmal fast ganz von vorne anfangen.
Meine frage ist jetzt, ob es nun wirklich der eleganteste weg ist, die Textbox dafür komplett neu zu erfinden/zu coden oder ob es eurer Meinung nach eleganter ist die Message abzufangen wenn ein Zeile neu gezcihnet wird in der standart Textbox und diese einfach neu zu malen. (ich hoffe ihr versteht was ich meine :D)
Oder gibt es vielleicht noch andere lösungswege, auf die ich noch garnicht gekommen bin?!

Aso, vielleicht noch wichtig: Ich will es selber schreiben und keine fertigte Klasse/Komponente benutzen.

Gruss der Ari

Thema: Erweiterungssystem realisieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich verweise dann auch aml dreist auf CodeProject: Plug-ins in C#

Thema: mute all aktivieren/deaktivieren
Am im Forum: Grafik und Sound

Kommt drauf an ob du es mit DX machen willst oder rein über die API?
ohne DX nur WinAPI

Vielleicht hilft es ja oder lenkt dich in die richtige Richtung

btw. 2 Min suche bei google 8o

Thema: wav abspielen (fehler)
Am im Forum: Grafik und Sound

Wie sieht der Code für dein Form aus? Haben die den gleichen Namespace und wenn nicht, ist der Namespace in der Programm.cs mit using eingebunden?

Thema: Probleme bei der Skalierung des Pen
Am im Forum: Grafik und Sound

oder du scalst um die Kurve zu zeichnen, danach setzt du scale wieder auf die normale grösse und malst dann deine Linie

Thema: Bild bearbeiten
Am im Forum: Grafik und Sound

http://msdn2.microsoft.com/en-us/library/system.drawing.aspx
Da steht alles drinne was du brauchst. Schau mal speziell unter Graphics.

Thema: GDI32 fehler bei Invalidate
Am im Forum: Grafik und Sound

Ok, hab ein bisschen die GDI sachen verändert und raus genommen, das der Buffer jedesmal wenn WM_PAINT kommt neu gezeichnet wird (wenns auch nur bestimmte abschnitte waren) und siehe da, das Probelm ist gelöst

Thema: flv to mpg/mp3
Am im Forum: Grafik und Sound

Wenn man sich mal das Copyright zu dem programm durch liest findet man das hier

Zitat
ffmpeg , MEncoder , Mplayer , x264 , ffmpeg2theora , MusePack (mpc) ,
libavcodec library (compiled inside ffmpeg and MEncoder) & the theora/vorbis RealProducer's plugIn.

Also wirste dich wohl mit ffmpeg auseinander setzten müssen ffmpeg API
ffmpeg Dokumentation

EDIT
Wegen der Lizenz: Google ist dein Freund ffmpeg License

ffmpeg wird unter der LGPL veröffentlicht. Also ist es zum größten teil frei benutzbar. Mit ein paar einschränkungen, aber das steht alles auf der Lizenz Seite.

Thema: Dvb-t
Am im Forum: Grafik und Sound

Wenn ihr wirklich hinterher seid und langewile habt, würde ich euch raten mal bei mediaportal (http://www.team-mediaportal.com) vorbei zu schauen. Das Projekt ist OpenSource und es werden mehr Karten, egal ob DVB-S, DVB-T oder DVB-C, als vom Windows Media Center unterstützt (zumal MCE nichtmal mit DVB-C Karten umgehen kann). Der Code ist relativ gut zu verstehen, wenn man sich eingelesen hat. Was ihr ja "nur" braucht ist der TV-Server, der zeichnet die Programme auf und verteilt an Clients.

Vielleicht hilft es ja

Thema: GDI32 fehler bei Invalidate
Am im Forum: Grafik und Sound

Sorry hab mich gestern verschreiben, ich benut als Basisklasse Control nicht Panel

Also vom Control sind die OnPaint und OnPaintBackground funktion überschreiben, so das die nix machen, also auch nicht die base funktion aufrufen.
Es wird alles über die WindowsMessages gemacht. Hatte zwar erst vergessen WM_SIZE und WM_SIZING zu verarbeiten aber auch wenn ich das amche, bleibt das selbe Problem.

Also hier ein bissel Code:


private GDIMemDC mBuffer; // Memory DC

protected override void OnPaint( PaintEventArgs e ) { }
protected override void OnPaintBackground( PaintEventArgs pevent ) { }
protected override void OnSizeChanged( EventArgs e ) { }

public static int HiWord( int number )
        {
            return ( number >> 16 ) & 0xFFFF;
        }

        public static int LoWord( int number )
        {
            return number & 0xFFFF;
        }

        protected override void WndProc( ref Message m )
        {
            switch ( (WindowsMessages)m.Msg )
            {
                case WindowsMessages.WM_FONTCHANGE:
                    MeasureTextMetric( );
                    break;
                case WindowsMessages.WM_CREATE:
                    MeasureTextMetric( );
                    break;
                case WindowsMessages.WM_SETFOCUS:
                    break;
                case WindowsMessages.WM_SIZE:
                    this.Width = LoWord( m.LParam.ToInt32() );
                    this.Height = HiWord( m.LParam.ToInt32( ) );
                    mBuffer.SetSize( Width, Height );
                    break;
                case WindowsMessages.WM_SIZING:
                    //m.Result = new IntPtr( 1 );
                    break;
                case WindowsMessages.WM_ERASEBKGND:
                    m.Result = new IntPtr( 1 );
                    return;
                case WindowsMessages.WM_PAINT:
                    GDIGraphics g = GDIGraphics.FromHandle( this.Handle );
                    Rectangle ur = g.UpdateRect;

                    DrawTextArea( mBuffer, ur );
                    DrawGutterArea( mBuffer, ur );

                    mBuffer.Draw( g.Hdc, ur.X, ur.Y, ur.Width, ur.Height, ur.X, ur.Y );

                    g.Destroy( );
                    break;
            }

            base.WndProc( ref m );
        }
    }

Für die GDI verwendung häng ich den Code mal mit dran. Ist an manchen stelölen etwas verbesserungs würdig und es sind noch längst nicht alle Funktionen drinne, aber für mich funzt die.
Meine vermutung ist noch, da ich bei den GDIGraphics funktionen System.Drawing.Rectangle's und System.Drawing.Color's benutze, das alles etwas evtl ausbremst.
Naja schauts euch an

Thema: GDI32 fehler bei Invalidate
Am im Forum: Grafik und Sound

Moin!

Ist wahrscheinlich nur eine simple sache, aber ich komm einfach auf keine Lösung.
Spiele zur zeit ein wenig mit der GDI API rum. Ich hab ein Panel, das komplett von der GDI gezeichnet wird (nicht GDI+).
Ich habe einen BackBuffer (Memory DC) auf dem alles vorgezeichnet wird und danach mit BitBlt aufs Panel übertragen wird.
Funzt auch alles wunderbar, nur nachdem ich jetzt von der variante, das ganze Panel neu zu "bezeichnen", auf die variante mit UpdateRects umgestiegen bin, hab ich ein paar Probleme.
Das UpdateRect wird ja immer bei der BeginPaint funktion in der PAINTSTRUCT mit geliefert. Wenn das Panel nun stumpf mit InvalidateRect geupdatet wird, ist kein Problem vorhanden.
Sobal ich aber mit einem anderen Fenster drüber "fahre" oder das Panel zur Runtime vergrößere, malt er mit hässliche linen mit aufs Panel und ausserdem wird nicht mehr alle korekt dargestellt. Ich häng mal ein Bild mit dran.

Vielleicht weiss ja jemand ne lösung, oder geht es wirklich nur mit einem kompletten repaint des Panels?

Danke schonmal im vorraus.

Thema: Wie implementiert man Klassen die zur Designzeit nicht bekannt sind?
Am im Forum: Rund um die Programmierung

System.Reflection

MSDN hat alles was du brauchst. Lese die Ctor's des Typen aus und erstelle ihn zur laufzeit. Google hat so einiges an Beispielen zu bieten.

Thema: Scanner übers Netzwerk betreiben
Am im Forum: Projekte

Zitat
Original von elli
Hallo.

hier scheint Synchronisation möglich ...
CSharp Twain Project

sprich eine Assembly zur Fernsteuerung (WCF?) der anderen Komponente.

elli

Die wollte ich zu anfang auch nehemn, hatte aber meine Probleme damit. Also hab ich sie selber geschrieben.

Den Source dafür kann ich raus hauen, einfach ne PN an mich.