Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 05:22

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: TBitmap, resizen/stretchen probleme
BeitragVerfasst: Di Mär 16, 2004 18:03 
Offline
DGL Member

Registriert: Fr Feb 27, 2004 02:59
Beiträge: 13
hi

ich müsste ein TBitmap vergrössern und stretchen, also sagen wir ich hab en bitmap mit 50x40 und will es auf ne grösse von 100x100 bringen. ich kenn zwar canvas.stretchdraw, aber das klappt nicht so wirklich. wie muss ich das verwenden, bzw. was kann ich sonst machen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 18:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 27, 2002 16:29
Beiträge: 77
Wohnort: Düsseldorf
Mit "reinem" TBitmap geht es imho so:
Code:
  1.  
  2. bmp.width:=100;
  3. bmp.height:=100;
  4. bmp.canvas.stretchdraw(rect(0,0,100,100),bmp);
  5.  

Allerdings wird es dann ziemlich pixelig.

_________________
Probleme sind zum Lösen da


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 22:17 
Offline
DGL Member

Registriert: Fr Feb 27, 2004 02:59
Beiträge: 13
ok hmm das klappt nicht bei mir...

ich will ne heightmap in voxeldaten umwandeln, egal wie jetzt muss ich hauptsächlich einzelne pixel ansprechen können (so getan mit einwiebeschriebenvergrössertesbitmap.canvas.pixels[x, y]) und das klappt eben nicht... gibts da ne andere möglichkeit der bildverarbeitung (kein tbitmap zb)?... sollte alles runtimemäßig verwirklichbar sein also am besten keine komponenten oder so (wenn die von code geseteuert auch so gut funzen ists auch gut).

danke im voraus


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 22:25 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 18:19
Beiträge: 165
Wohnort: Cologne
Hmm... ich weiss jetzt nicht ob das unbedingt hilfreich sein könnte, aber wenn du die einzelnen Pixeldaten auslesen willst könnte der Dreisatz helfen:

also für X dann:
(xPos * 50) DIV 100
und für Y:
(yPos * 40) DIV 100


Wenn du das alles ohne Komponenten machen willst empfiehlt es sich entweder:
1. Ein tool zu schreiben was das Bitmap in dein eigenes Format umwandelt was du dann ohne Komponente in deinem eigentlichen Programm laden kannst
2. Die BMP's roh einzulesen. das ist aber ein wenig viel aufwand und somit doof =)

_________________
www.omfg.biz - aktuelles projekt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 22:36 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich versteh dich nicht ganz. Eine Heightmap zu stretchen bringt doch im Endeffekt rein gar nix, also spielt die Größe deiner Heightmap keine Rolle. Was genau willst du denn überhaupt machen?

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 22:39 
Offline
DGL Member

Registriert: Fr Feb 27, 2004 02:59
Beiträge: 13
so was ähnliches hab ich schon versucht kam aber nicht zu vernünftigen ergebnissen...

also sehr pixelig, wenn ich die daten einlese und sie sind grösser als das feld auf das sie abgebildet werden sollen klappts seltsamerweise.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 22:41 
Offline
DGL Member

Registriert: Fr Feb 27, 2004 02:59
Beiträge: 13
naja sagen wir mal ich habe ein feld von 100 x 100 voxel mit höhen zu füllen, hab aber nur en bild der grösse 40 x 40 als grundlage, dann ist es doch sinvoll das bild einfach auf 100x100 zu stretchen (mit interpolation) oder nicht? ich weiss jetzt natürlich nicht wie gut tbitmap dafür geeignet ist...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 22:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Dann kannst du TBitmap vergessen. Da werden beim Stretchen keine Pixel interpoliert. Interpolieren musst du dann im Endeffekt selbst, entweder über Canvas.Pixel (Schlecht, da sehr langsam) oder Scanlines (besser, aber komplizierter). Evtl reicht dann schon ein 3x3-Blur oder so.
Aber am besten lässt du dann TBitmap links liegen, oder schnappst dir nur davon die Pixeldaten über Scanline, legst die in nem eigenen Array ab und kannst die dann nach Herzenslust interpolieren.

P.S. : Ich würde das (wenns nicht dynamisch ist) allerdings schon vorher in nem Bildbearbeitungsprogramm machen, denn die können sowas ja schon von Haus aus.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 22:49 
Offline
DGL Member

Registriert: Fr Feb 27, 2004 02:59
Beiträge: 13
hmm ok ich schau mir das alle nochmal an


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 22:59 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
gluScale Image interpoliert linear. Damit könnte es vielleicht gehen. Dazu muß da Bitmap aber in einer Form ähnlich den Texturedaten vorliegen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 16, 2004 23:41 
Offline
DGL Member

Registriert: Fr Feb 27, 2004 02:59
Beiträge: 13
also ich hab jetzt eben wieder die dreisatz lösung :-(

ich hab es mit getestet mit nem grösseren bild als das voxelfeld.

mit der dreisatz lösung ist es viel pixeliger, als wenn ich ein bitmap auf diese grösser stretche (von zu groß auf kleinere bildgrösse geht ja seltsamerweise), aber bin trotzdem zufrieden.

wenn ihr noch ideen habt sagt es bitte,

Danke für die antowrten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 17, 2004 16:44 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Auf Swissdelphicenter gibts wunderbare routinen, Bitmaps fast verlustfrei zu stretchen ;)
Einfach mal bissel gucken ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 06, 2004 20:55 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
Graphics32 (www.g32.org) bietet wunderbare und sehr schnelle Bildmanipulationsmethoden (u.a. extrem hochwertige Resizing-Routinen). Das ganze liegt mit BGRA sogar mit einem fuer OpenGL (ab 1.2) direkt verdaubaren Format im Speicher (einfach TBitmap32.Bits an die entsprechenden GL-Befehle ubergeben).


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]