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 pdelvo
Thema: (User)Control für Uhr erstellen
Am im Forum: GUI: Windows-Forms

Stimmt

Thema: (User)Control für Uhr erstellen
Am im Forum: GUI: Windows-Forms

Zuerst musst du von der Klasse UserControl ableiten. Sie befindet sich in System.Windows.Forms

Darin kannst du dann die OnPaint Methode überschreiben

pdelvo:O

Thema: Seam Carving: zu entfernende Pixel ermitteln
Am im Forum: Grafik und Sound

Hast du eine Idee wie man das optimieren könnte. Ich habe gerade keine Idee

Thema: Seam Carving: zu entfernende Pixel ermitteln
Am im Forum: Grafik und Sound

Schade. Egal.

Also von Geschwindigkeit ist gerade noch keine Rede. Enen Seam zu entfernen dauer ca. 15 Sekunden. Aber es funktioniert.Mich wundert es das ich das mit meinen 14 Jahren und ca 3/4 Jahren Erfahrung geschaft habe. Ich habe das Projekt angehangen. Vieleicht kannst du dir das mal Anschauen.
Also der langsame Teil ist in dem Thread die zweite Schleife.

PS : Ich sehe gerade auf der verlinkten Seite das dort steh das ein Teil in Python geschrieben ist8)

Gruß pdelvo

Thema: Seam Carving: zu entfernende Pixel ermitteln
Am im Forum: Grafik und Sound

Juhu
Es geht!
Somit bin ich meinen Recherchen nach der erste der das in C# nachgebildet hat8)
Jetzt muss ich das nur noch perfomanter machen. Und noch ein par Kommentare reinpacken. Dann werde ich das Projekt online stellen.

pdelvo

Thema: Seam Carving: zu entfernende Pixel ermitteln
Am im Forum: Grafik und Sound

Ja hab ich. Die ähneln sich aber nicht wirklich. Ich hab aber nochmal gegoogled. Ich hab jetzt eine Bibliothek gefunden die die die Kantenerkennung durchführt(Link).

Nochmal zu dem Algorithmus :
Zuerst wird eine Kantenerkennung durchgeführt.(Siehe oben) Danach werden den Pixeln die nahe der Kanten liegen höhere Werte zugeteilt.(Das nennt man dann Energiebild). Zum Schluss werden dann Pfade durch die Pixel mit den niedrigeren Weten (Seams) gefunden und gelöscht.

Der Algorithmus ist also garnicht so schwer. Ich frag mich nur warum nicht vorher jemand auf die Idee gekommen ist. Ich melde mich nochmal wenn ich nicht mehr weiterweiß.

Gruß pdelvo

Thema: Seam Carving: zu entfernende Pixel ermitteln
Am im Forum: Grafik und Sound

Ich habe versucht mit dem Energiebild, welches ich mit dem oben geposteten Code erstellt habe, die Pixel zu ermittel die nicht gebraucht werden.Dazu habe ich zuerst in der ersten Spalte von oben von links nach rechts den Pixel mit dem nidrigsten Wert zu ermitteln. Dann gehe ich in einer Schleife jedes mal einmal nach unten und Suche Dort den niedrigsten, der vom x-Wert höchstens eins Abweicht.
Das Problem ist, dass ich das Energiebild wahrscheinlich falsch berrechnet habe, denn ich bekomme bei fast jedem Pixel den Gleichen Wert raus. Und außerdem weiß ich nicht ob ic den mögliche Unterschied bei dem x Wert vergrößern muss(z.B. 2).
Ich hoffe jemand versteht mein Problem.

Gruß pdelvo

Thema: CheckBox Status abfragen?
Am im Forum: GUI: Windows-Forms

Hallo

ich möchte darauf hinweisen das mycsharp.de kein Anfängerforum ist.

Den Status fragt man aber so ab :


if (CheckBoxTest.Checked) {....}

pdelvo

Thema: Taskleiste ausblenden/entfernen
Am im Forum: GUI: Windows-Forms

Schau dir mal das an : Klick

pdelvo

Thema: Seam Carving: zu entfernende Pixel ermitteln
Am im Forum: Grafik und Sound

Ich hab mir das mal angeguckt, aber bei C++ steh ich auf dem Schlauch. Außerdem lässt sich der Code nicht compipieren. Vieleicht hat sich das doch einer schon angeschaut und kann mir einen Tip geben.
trotzdem Danke

pdelvo

Thema: Seam Carving: zu entfernende Pixel ermitteln
Am im Forum: Grafik und Sound

Mein Problem ist es diePxel die entfernt werden sollen zu ermitteln.

pdelvo

Thema: freie Windows Symbole/Icons
Am im Forum: Smalltalk

Noch so zur Ergänzung :
Klick mich!
Sind richtig viele

Thema: Seam Carving: zu entfernende Pixel ermitteln
Am im Forum: Grafik und Sound

Hallo zusammen,
Ich möchte ein Programm mit Seam Carving schreiben. ICh habe auch schon angefange und habe ein Energiebild berrechnet.
Jetzt komme ich aber nicht sorecht weiter.
Vieleicht hat ja einer eine Idee wie man da machen kann. Noch eine Idee von mir wäre Multithreading(Vieleicht mit den Parallel Extension?) Hier ist mein Code für das Energiebild :


//Das ist das Array für das Energiebild
//Hier wird für jedes Pixel eine Zahl
//gespeichert. Das wird genutzt um nachher die
//Pixel die nicht gebraucht werden
//zu entfernen.
int[,] EnergieBild;
private void ErstelleEnergieBild()
{
//Initialisiere das Energiebild
EnergieBild = new int[pictureBox1.Image.Width, pictureBox1.Image.Height];
Bitmap map = (Bitmap)pictureBox1.Image;
int[,] bw = map.SchwarzWeiß();
int w = map.Width-1;
int h = map.Height - 1;
Parallel.For(0, w, i =>
{
for (int j = 0; j < h; j++)
{
EnergieBild[i, j] = GetEnergie(bw, j, i);
//int ener = EnergieBild[i, j] + 100;
//((Bitmap)pictureBox1.Image).SetPixel(i, j, Color.FromArgb(ener,ener,ener));
}
});

}
private int GetEnergie(int[,] bit, int i, int j)
{
List<int> templist = new List<int> );
templist.Add(bit[j,i]);
if (i != 0)
{
templist.Add(bit[j, i - 1]);
if (j != 0)
{
templist.Add(bit[j - 1, i - 1]);
}
}
if (j != 0)
{
templist.Add(bit[j - 1, i]);
if (i > bit.GetLength(1) - 1)
{
templist.Add(bit[j - 1, i + 1]);
}
}
if (i > bit.GetLength(1) - 1)
{
templist.Add(bit[j, i + 1]);
if (j < bit.GetLength(0) - 1)
{
templist.Add(bit[j + 1, i + 1]);
}
}
if (j < bit.GetLength(0) - 1)
{
templist.Add(bit[j + 1, i]);
if (i > 0)
{
templist.Add(bit[j + 1, i - 1]);
}
}
int u = 0;
int temp = 0;
foreach (int x in templist)
{
temp += x;

}
temp /= templist.Count;
u = Math.Abs(temp - bit[j, i]);
return u;
}

Danke schonmal im vorraus

Thema: [gelöst] Bilder in ein größeres Bild kopieren
Am im Forum: Grafik und Sound

Versuche fogendes :


Bitmap map = new Bitmap(500, 100);
Graphics graph = Graphics.FromImage(map);
graph.DrawImage(Image1, new Point(0, 0));
graph.DrawImage(Image2, new Point(100, 0));
graph.DrawImage(Image3, new Point(200, 0));
graph.DrawImage(Image4, new Point(300, 0));
graph.DrawImage(Image5, new Point(400, 0));
map.Save("Der\\Pfad.jpg";);

pdelvo

Thema: GetHostEntry("localhost") fehler in Vista
Am im Forum: Netzwerktechnologien

Also ich hatte das fürn Netzwerkspiel gebraucht.
Müsstest du eventuel anpassen :

[/b]
public void Start()
{
try
{
// Set the TcpListener on port 13000.
IPAddress localAddr = IPAddress.Parse(Dns.Resolve(Dns.GetHostName()).AddressList[0].ToString());
IPEndPoint ep = new IPEndPoint(localAddr,port);
// TcpListener server = new TcpListener(port);
TcpListener server = new TcpListener(ep);

// Start listening for client requests.
server.Start();

// Buffer for reading data

//String data = null;

// Enter the listening loop.
client = server.AcceptTcpClient();
Connected(ClorLi.Listener);
NetworkStream str = client.GetStream();
while (true)
{
Thread.Sleep(500);
if (str.DataAvailable)
{
byte[] buffer = new byte[256];
str.Read(buffer, 0, 256);
string erg = Encoding.Default.GetString(buffer);
Get(erg);
}
}
}
catch (SocketException e)
{
MessageBox.Show(e.Message);
}
}
[b]

Thema: GetHostEntry("localhost") fehler in Vista
Am im Forum: Netzwerktechnologien

Hallo,
ich hatte das selbe Problem und habe es dann mit Dns.Resolve gelöst.
Obwohl VS sagt das diese Methode veraltet ist

pdelvo

Thema: Daten in einem tree darstellen
Am im Forum: Datentechnologien

So wie ich es verstanden habe macht man das am besten mit Rekursion.
zb :


public TreeNode GetData(DeinType data)
{
TreeNode node = new TreeNode(data.Name);
node.Tag = data.DatenZumAnzeigen;
if(data.HasChilds)
foreach(DeinType nodes in data.Childs)
{
node.Nodes.Add(GetData(nodes));
}
return node;
}
Das müsste man jetzt noch auf die Daten anpassen.
Hinweiß : Das hab ich geschrieben ohne zu testen(zu faul)

pdelvo

Thema: Ab welchem Alter ist C# "gut" zu verstehen?
Am im Forum: Smalltalk

Halllo,
ich bin jetzt 14 und programmiere jetzt seit ca. einem halben Jahr C# und davor ein viertel Jahr VB.Ich muss sagen ich habs schnell kapiert und kann jetzt nicht mehr aufhören .
Am Anfang hatte ich zwar einige Probleme aber ich habs auf die Reihe bekommen(Google ist mein Freund).

Gruß pdelvo

Thema: Drop File vom Programm aus
Am im Forum: GUI: Windows-Forms

Jetz versteh ich was du meinst.Bin aber leider überfragt.Wende dich mal an den Hersteller des Controls. Oder suche nochmal im Context also Control. ...

Thema: Drop File vom Programm aus
Am im Forum: GUI: Windows-Forms

Meinst du jetzt sowas


Bitmap bmp = Bitmap.FromFile(@"A:\dresse\zum\File.bmp");
Dafür brauch man kein Drag 'N' Drop

Entweder du drückst dich falsch aus oder ich bin zu doof

Gruß pdelvo

Thema: Drop File vom Programm aus
Am im Forum: GUI: Windows-Forms

Hab ich mich wol verlesen, das geht so:


void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
string path =Path.Combine(Environment.GetEnvironmentVariable("TEMP";) , "tempimage.jpg";);
try{
File.Delete(path);
}catch{}

pictureBox1.Image.Save(path);
DataObject obj = new DataObject(DataFormats.FileDrop,path);
obj.SetFileDropList(new System.Collections.Specialized.StringCollection() { path });
//pictureBox1.GiveFeedback += new GiveFeedbackEventHandler(pictureBox1_GiveFeedback);
pictureBox1.DoDragDrop(obj, DragDropEffects.Copy);
}
(Hab lange gebrauch bis es funktioniert hat)

Gruß pdelvo

Thema: Drop File vom Programm aus
Am im Forum: GUI: Windows-Forms

So ich habs jetzt hinbekommen.
Man kann auf das Programm ein Bild ziehen und es wird in einer PictureBox angezeigt :


private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.MaximumSize = pictureBox1.Size;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
this.AllowDrop = true;
this.DragEnter += new DragEventHandler(Form1_DragOver);
this.DragDrop += new DragEventHandler(Form1_DragDrop);
}

void Form1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] FileList = (string[])e.Data.GetData(DataFormats.FileDrop, false);
if (FileList.Count() == 1)
{

FileInfo fi = new FileInfo(FileList[0]);
if (fi.Extension == ".gif" | fi.Extension == ".bmp" | fi.Extension == ".jpg" | fi.Extension == ".jpeg";)
{
pictureBox1.Image = Image.FromFile(FileList[0]);
}
}
}
else
e.Effect = DragDropEffects.None;
}

void Form1_DragOver(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] FileList = (string[])e.Data.GetData(DataFormats.FileDrop, false);
if (FileList.Count() == 1)
{

FileInfo fi = new FileInfo(FileList[0]);
if (fi.Extension == ".gif" | fi.Extension == ".bmp" | fi.Extension == ".jpg" | fi.Extension == ".jpeg";)
{
e.Effect = DragDropEffects.Move;
}
}
}
else
e.Effect = DragDropEffects.None;
}

Thema: Drop File vom Programm aus
Am im Forum: GUI: Windows-Forms

Jede Form und jedes Control hat Drag Events zb this.DragOver Damit müsste man das machen.Hab ich selber aber noch nich ausprobiert. Versuch ich jetzt auch mal

edit : Hab grad rausgefunden man muss erst this.AllowDrop = true;

Grüß pdelvo

Thema: Netzwerkspiel Problem
Am im Forum: Netzwerktechnologien

Ich bleibe lieber bei der Schleife. Ich hab das gerade nochmal mit dem Timer ausprobiert, aber jetzt klappt garnichts mehr.Erstens musste ich meinen ganzen Code umschreiben.Und Zweitens wird der nicht ausgeführt.
Die Schleife funktioniert. 0% Auslastung sind auch in Ordnung.Und ich glaube jeder kann auf die Antwort eine halbe Sekunde warten

Thema: Netzwerkspiel Problem
Am im Forum: Netzwerktechnologien

Danke,
Ich hatte das mit dem Timer schonmal probiert.Hab ich irgendwie nicht hinbekommen. Auf Thread.Sleep bin ich garnicxh gekommen. Gute Idee. Hab ich eingebaut. Und sehe da 0%.

Gruß pdelvo8)

Thema: Netzwerkspiel Problem
Am im Forum: Netzwerktechnologien

Hallo zusammen,
Ich habe eine Frage und zwar habe ich ein Netzwerkspiel programmiert.Das klappt zwar, aber eine Methode wartet in einem anderen Thread auf Daten das sieht so aus


public void Start()
{
try
{
IPAddress localAddr = IPAddress.Parse(
Dns.Resolve(Dns.GetHostName())
.AddressList[0].ToString());
IPEndPoint ep = new IPEndPoint(localAddr,port);
TcpListener server = new TcpListener(ep);
// Start listening for client requests. server.Start();
// Buffer for reading data
// Enter the listening loop.
client = server.AcceptTcpClient();
Connected(ClorLi.Listener);
NetworkStream str = client.GetStream();
//Hier liegt das Problem
while (true)
{
if (str.DataAvailable)
{
byte[] buffer = new byte[256];
str.Read(buffer, 0, 256);
string erg = Encoding.Default.GetString(buffer);
Get(erg);
}
}
}
catch (SocketException e) {
MessageBox.Show(e.Message);
}
}
Die Methode verbraucht an dieser stelle 25% Prozent CPU Leistung(Ich hab nen QuadCore also einer ist voll ausgelastet.Ich frag mich was wol bei nem SingleCore passiert)
weiß jemand wie man das optimieren kann?