Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Bild

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Degolino



Anmeldungsdatum: 19.07.2006
Beiträge: 48

BeitragVerfasst am: 06.01.2007, 12:23    Titel: Bild Antworten mit Zitat

Wie can ich ein Bild einlaben das mehr als 16 Farben hat?????
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 06.01.2007, 12:29    Titel: Antworten mit Zitat

Aus meiner Sammlung:

http://www.dreael.ch/Deutsch/Download/WindowsBitmapBibliothek.html

=> Unterstützt auch SCREEN 13 mit Bilder für 256 Farben.

Für TrueColor-Bilder (24 bpp) müsstest Du auf VESA zurückgreifen und selber einen Lader schreiben.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 06.01.2007, 12:30    Titel: Antworten mit Zitat

Forensuche. mit den Augen rollen
Monster-FAQ. mit den Augen rollen

Entweder in SCREEN 13 switchen (aber maximale Auflösung von 320x200), der 256 Farben unterstützt, oder auf SVGA zurückgreifen.
Entweder mittels eigener Funktionen, oder mittels einer Lib, zum Beispiel der AK-Lib (-> Forensuche, oder http://www.iconsoft.de).
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 06.01.2007, 15:07    Titel: Antworten mit Zitat

Hallo

Mal wieder eine gute Gelegenheit, meine 256-Farben-BMP-Laderoutine zu posten...

Code:
SCREEN 13: CLS
DIM byte AS STRING * 1
OPEN "bild.bmp" FOR BINARY AS #1
GET #1, 19, br&
GET #1, 23, ho&
FOR f = 0 TO 255
OUT 968, f
FOR rgb = 0 TO 2
GET #1, 57 + f * 4 - rgb, byte
OUT 969, FIX(ASC(byte) / 4)
NEXT: NEXT
normbr = 4 * FIX((br& + 3) / 4)
FOR x = 0 TO br& - 1
FOR y = 0 TO ho& - 1
GET #1, x + y * normbr + 1079, byte
PSET (x, (ho& - 1) - y), ASC(byte)
NEXT: NEXT
CLOSE #1


Funktioniert aber nur für BMPs mit 256 Farben.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 06.01.2007, 22:57    Titel: Antworten mit Zitat

wow, ziemlich klein, der loader geschockt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 07.01.2007, 01:03    Titel: Antworten mit Zitat

Ja, ist zwar etwas unflexibel, aber ich habe versucht, ihn mit meinen beschränkten Fähigkeiten auf Kompaktheit zu optimieren.
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 01:42    Titel: Antworten mit Zitat

Meine standard-bmp-routine (als ich qb noch nutzte) war etwas mehr als doppelt so lange. dafür war das nicht so c++ style code durchgeknallt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 07.01.2007, 12:05    Titel: Antworten mit Zitat

Was bitte ist daran C++-Style?! verwundert
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 07.01.2007, 12:52    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Meine standard-bmp-routine (als ich qb noch nutzte) war etwas mehr als doppelt so lange. dafür war das nicht so c++ style code durchgeknallt

C++ Style wäre imho, wenn in dem Codestück 100 geschweifte Klammern und 50 Sonderzeichen, die man in QB/FB mit "Worten" ausdrücken könnte, enthalten wären. lachen
Code:
// Ausschnitt aus dem 7zip Source
// http://sevenzip.sourceforge.net
UInt32 CEncoder::ReadRleBlock(Byte *buffer)
{
  UInt32 i = 0;
  Byte prevByte;
  if (m_InStream.ReadByte(prevByte))
  {
    UInt32 blockSize = m_BlockSizeMult * kBlockSizeStep - 1;
    int numReps = 1;
    buffer[i++] = prevByte;
    while (i < blockSize) // "- 1" to support RLE
    {
      Byte b;
      if (!m_InStream.ReadByte(b))
        break;
      if (b != prevByte)
      {
        if (numReps >= kRleModeRepSize)
          buffer[i++] = numReps - kRleModeRepSize;
        buffer[i++] = b;
        numReps = 1;
        prevByte = b;
        continue;
      }
      numReps++;
      if (numReps <= kRleModeRepSize)
        buffer[i++] = b;
      else if (numReps == kRleModeRepSize + 255)
      {
        buffer[i++] = numReps - kRleModeRepSize;
        numReps = 0;
      }
    }
    // it's to support original BZip2 decoder
    if (numReps >= kRleModeRepSize)
      buffer[i++] = numReps - kRleModeRepSize;
  }
  return i;
}

void CEncoder::WriteBits2(UInt32 value, UInt32 numBits)
  { m_OutStreamCurrent->WriteBits(value, numBits); }
void CEncoder::WriteByte2(Byte b) { WriteBits2(b , 8); }
void CEncoder::WriteBit2(bool v) { WriteBits2((v ? 1 : 0), 1); }
void CEncoder::WriteCRC2(UInt32 v)
{
  for (int i = 0; i < 4; i++)
    WriteByte2(((Byte)(v >> (24 - i * 8))));
}

void CEncoder::WriteBits(UInt32 value, UInt32 numBits)
  { m_OutStream.WriteBits(value, numBits); }
void CEncoder::WriteByte(Byte b) { WriteBits(b , 8); }
void CEncoder::WriteBit(bool v) { WriteBits((v ? 1 : 0), 1); }
void CEncoder::WriteCRC(UInt32 v)
{
  for (int i = 0; i < 4; i++)
    WriteByte(((Byte)(v >> (24 - i * 8))));
}

Jaja, ich weiß, ich bin ja bloß ahnungslos... durchgeknallt
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 07.01.2007, 13:47    Titel: Antworten mit Zitat

Genau. Zunge rausstrecken lachen *zwinker-zwinker*

Nein, aber genauso, wie man auch BASIC gelernt hat, kann man sich auch an C(++) gewöhnen. Ich empfinde es eher als seltsam, solche Sachen in Wörter auszudrücken... durchgeknallt lachen
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 16:17    Titel: Antworten mit Zitat

Naja, er hat ja z.B. so was wie NEXT:NEXT geschrieben, also auch keine einrückungen udn so durchgeknallt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 07.01.2007, 16:18    Titel: Antworten mit Zitat

Wär sagt, dass man bei C(++) nicht einrückt?! durchgeknallt
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 07.01.2007, 16:37    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Naja, er hat ja z.B. so was wie NEXT:NEXT geschrieben, also auch keine einrückungen udn so durchgeknallt


Ich würde selbst auch sagen, dass das eher schlampig ist als C++-mässig...

Es verblüfft durchgeknallt mich übrigens immer wieder, cool wie ihr auch in kürzeste Beiträge lächeln noch mindestens ein Smilie einbaut. zwinkern mit dem Kopf durch die Mauer wollen lachen weinen
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 07.01.2007, 17:24    Titel: Antworten mit Zitat

Er meinte wahrscheinlich "C-mässig", nicht "C++-mässig". In C waren in den 80er-Jahren solche Sachen hipp:
Code:

for(j>20?i=min(x,y):i=0;slen=strlen(s),slen<20;i++,j=i*2) strcat(s,"xy")

Das ist ne for-Schleife, bei der in der Initialisierung, Bedingungsprüfung und Inkrementierung noch alles mögliche mitgeschleift wird. (Der Code ist übrigens sinnlos zwinkern)

In die Richtung geht der optimierte Loader, da stimme ich zu. Aber er ist halt auch optimiert lächeln

Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 17:36    Titel: Antworten mit Zitat

Ja, dann eben eher C-Style durchgeknallt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 07.01.2007, 17:55    Titel: Antworten mit Zitat

Wenn man die damalige Rechnerarchitektur bedenkt... zwinkern

Aber heute ist Performance nur noch ein Randgebiet für absolute High-End-Anwendungen bzw. Forschungen/Wissenschaft.
Und selbst in diesen Gebieten wird auf gut struktuierten und leserlichen Code Wert gelegt.
Ich weiß nicht, warum so viele Leute ein so verzerrtes Bild von einem C(++)-Programmierer haben... durchgeknallt lachen
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 07.01.2007, 20:13    Titel: Antworten mit Zitat

Ich weiss wieso ich so über C++ denke durchgeknallt
In der Berufsschule verwenden wir
C++-Programmierung lernen von André Willms.
Das Totschweige von Else IF, diversen Rechtschreibfehlern und ähnlichem hat es mein Bild von C++ mit geprägt durchgeknallt

Wobei einige Sachen sind Unsinn und Typisch C++.
z.B. Das es Standardmässig keine "Idoten Sicherung" gibt, die Überläufe verhindert.
Oder geliebte Konstrukte wie
Code:
 int i=0;
cout << ++--i++++
       << ++i--
       << i;

Oder mein Liebling:
Code:
int a=0, b=0;
if ((a++==1&&b++==1))

Ratet mal welchen Wert a und b am Schluss haben.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 20:22    Titel: Antworten mit Zitat

logisch sollte ja sein jeweils 1... und was hat's?
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 08.01.2007, 20:29    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
logisch sollte ja sein jeweils 1... und was hat's?

(Compiler wegwerfen, äh ich mein anwerfen)
Code:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int a=0, b=0;
    if (a++==1&&b++==1);
   
    cout << a
         << "\n"
         << b
         << "\n";
   
    system("PAUSE");
}

So, und nun ein Crash Kurs wieso C++ Mist ist.

Code:
if (a++==1&&b++==1);

Zerlegen wir mal:
Zuerst kommt
Code:
a++==1
was aus
Code:
a=1
a++

besteht.
a==1 ist falsch, weil a=0 ist gemäss Initalisierung.
Bleibt noch das a++, also ist nun a=1.

Wie gesagt, a==1 war vorher falsch, folglich (das ist eben Typisch C++) prüft C++ die nächsten Bedingungen nicht mehr und führt folglich das b++ nicht aus und folglich ist b immer noch 0.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz