Brush / QPen Sketch Style

Alles rund um die Programmierung mit Qt
Antworten
der_burner
Beiträge: 10
Registriert: 28. Oktober 2013 17:21

Brush / QPen Sketch Style

Beitrag von der_burner »

Hallo Zusammen,

ich wollte einmal mein Projekt etwas aufhübschen und die Linen im Rect, Eclipse etc. pimpen. Aber das scheint schwerer zu sein als ich dachte!
Irgendwie finde ich dazu nicht wirklich etwas auf Google. Zwei Links habe ich nur gefunden, die das gleiche beschreiben, aber ich verstehe das irgendwie nicht. Mein Ziel ist es das alle Linien aussehen wie im Sketch Style:
http://www.wirify.com/wp/wp-content/upl ... iq-CNN.png

Hier sind die zwei Links die ich gefunden habe, aber wie gesagt ich kann damit irgendwie nicht wirklich was anfangen:
1 http://qt-project.org/forums/viewthread/14991/P15
2 http://qt-project.org/forums/viewthread/18048

Könnt Ihr mir das erklären, oder mir helfen, das zu verstehen. Habt ihr sonsonst noch irgendwo Stoff zu diesem Thema? Ich denke das sollte eigentlich in QT nicht das Problem sein, verschiedene Arten von Linien zu zeichnen.

Vielen Dank
der_burner
Beiträge: 10
Registriert: 28. Oktober 2013 17:21

Re: Brush / QPen Sketch Style

Beitrag von der_burner »

Hallo Zusammen,

hat keiner eine Idee?

Viele Grüße
veeman
Beiträge: 280
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: Brush / QPen Sketch Style

Beitrag von veeman »

Es gibt anscheinend keine einfache Methode für dein Vorhaben.

In dem einen Thread wird beschrieben wie man es mit Pixmap bzw mit "Stempeln" realisieren kann,
in dem ein Brush in einer Schleife entlang eines Pfades gemalt/übermalt wird. Dies ist jedoch relativ Rechenintensiv.

Eine andere Methode wäre vielleicht mit Hilfe von OpenGL und einem Sketch-Render das gewünschte von der Grafikkarte übernehmen zu lassen.

Beides würde ich für eine einfache Anwendung jedoch nicht empfehlen.
der_burner
Beiträge: 10
Registriert: 28. Oktober 2013 17:21

Re: Brush / QPen Sketch Style

Beitrag von der_burner »

Vielen Dank für deine Antwort.

Ok, hatte jetzt nicht erwartet das so etwas so kompliziert ist.

Wenn ich mir das Beispielt http://www.mrdoob.com/projects/harmony/#ribbon ansehe, kann das sogar JavaScript recht flüssig.

Ok, dann muss ich mir da mal was ausdenken.
veeman
Beiträge: 280
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: Brush / QPen Sketch Style

Beitrag von veeman »

Solange du drauf achtest das dass Zeichnen richtig gemacht wird, ggf mit einem Zwischenpuffer sollte das in Qt ohne Probleme gehen.

Auszug aus dem Code der Verlinkten Seite:

Code: Alles auswählen

sketchy.prototype = {
  context: null,
  prevMouseX: null,
  prevMouseY: null,
  points: null,
  count: null,
  init: function(a) {
    this.context = a;
    this.context.globalCompositeOperation = "source-over";
    this.points = new Array();
    this.count = 0
  },
  destroy: function() {},
  strokeStart: function(b, a) {
    this.prevMouseX = b;
    this.prevMouseY = a
  },
  stroke: function(f, c) {
    var e, b, a, g;
    this.points.push([f, c]);
    this.context.lineWidth = BRUSH_SIZE;
    this.context.strokeStyle = "rgba(" + COLOR[0] + ", " + COLOR[1] + ", " + COLOR[2] + ", " + 0.05 * BRUSH_PRESSURE + ")";
    this.context.beginPath();
    this.context.moveTo(this.prevMouseX, this.prevMouseY);
    this.context.lineTo(f, c);
    this.context.stroke();
    for (e = 0; e < this.points.length; e++) {
      b = this.points[e][0] - this.points[this.count][0];
      a = this.points[e][1] - this.points[this.count][1];
      g = b * b + a * a;
      if (g < 4000 && Math.random() > (g / 2000)) {
        this.context.beginPath();
        this.context.moveTo(this.points[this.count][0] + (b * 0.3), this.points[this.count][1] + (a * 0.3));
        this.context.lineTo(this.points[e][0] - (b * 0.3), this.points[e][1] - (a * 0.3));
        this.context.stroke()
      }
    }
    this.prevMouseX = f;
    this.prevMouseY = c;
    this.count++
  },
  strokeEnd: function() {}
};
Da sieht man, dass jede Mausposition getrackt wird und mittels einer Schleife alle Punkte jedes mal durchlaufen werden und je nach Abstand zum aktuellen Punkt ggf weitere Linie in Richtung der Bereits gezeichneten gemalt werden.
der_burner
Beiträge: 10
Registriert: 28. Oktober 2013 17:21

Re: Brush / QPen Sketch Style

Beitrag von der_burner »

Ja, ich dachte es wäre nur schön / leichter das über QBrush oder QPen zu lösen. Die Software "Krita" wird ja auch in QT geschrieben und dort sind solche Linien kein Problem. Ich habe mir auch den Quellcode schon gezogen und versucht dort etwas abzulesen, aber das war dann doch zu viel des guten. Da bin ich nicht mehr so einfach durch gestiegen
Antworten