screenshot
-
Am aller einfachsten (aber evtl. nicht am schnellsten - k.A.) ist folgendes:
"// Hier jetzt irgendwie die Pixel setzen..." <= Einfach weglassen und das Bitmap-Objekt erstellen, dann sind erstmal irgendwelche zufälligen Pixelfarben da...
Das Bitmap-Objekt hat nämlich ne Methode "SetPixel", womit man sehr einfach Pixel setzen kann, nachdem man das Bitmap-Objekt erzeugt hat:neBitmap->SetPixel(x,y,RGB(255,0,0)); // roten Pixel bei P(x/y) setzen.
-
also so:
int dc2bitmap(HDC hdc, int width, int height, char *filename) { HDC hdc2; Bitmap* pBitmap; wchar_t file_name[MAX_CHARACTERS]; // String in Unicode umwandeln mbstowcs(file_name, filename, MAX_CHARACTERS); // Bitmap erstellen pBitmap = new Bitmap(file_name, FALSE); // FALSE specifies that color correction is not enabled pBitmap->SetPixel(x,y,RGB(255,0,0)); // roten Pixel bei P(x/y) setzen. delete pBitmap; return 1; }was sagst du zu dem geeky?
thx
-
hi geeky...weißt du was mir an deinem code bissi sorgen macht, das:
bi.bmiHeader.biCompression=BI_RGB;
ich will das ja kompremiert speichern.....da geht das nicht mit biCompresssion, da man da mit der hand kompremieren muss...ich würds aber gerne automatisch machen ohne viel aufwand!thx geeky

-
Bitmap::Bitmap(WCHAR* filename ,BOOL useIcm)
// Creates a Bitmap object based on an image file.Das bedeutet, dass Du ein Bitmap-Objekt im Speicher erzeugst!
Und zwar wird das Bitmap-Objekt im Speicher genauso aussehen wie das Bild, dass unter dem Dateinamen <filename> SCHON EXISTIERT!
Der Quellcode speichert also gar nichts!bi.bmiHeader.biCompression=BI_RGB;
Damit gebe ich nur an in welchem Format die Daten im Speicher vorliegen - nicht wie die Bilddaten gespeichert werden!
Das speichern geschieht mit neBitmap->Save(..);Evtl. sollte du hier alles nochmal ganz in Ruhe durchlesen und nochmal in der MSDN/PSDK bei "Bitmap" und "Image" ein bisschen rumlesen sowie nochmal ein wenig in einem C++ Tutorial/Buch lesen...
-
geeky schrieb:
Bitmap::Bitmap(WCHAR* filename ,BOOL useIcm)
// Creates a Bitmap object based on an image file.Das bedeutet, dass Du ein Bitmap-Objekt im Speicher erzeugst!
Und zwar wird das Bitmap-Objekt im Speicher genauso aussehen wie das Bild, dass unter dem Dateinamen <filename> SCHON EXISTIERT!
Der Quellcode speichert also gar nichts!bi.bmiHeader.biCompression=BI_RGB;
Damit gebe ich nur an in welchem Format die Daten im Speicher vorliegen - nicht wie die Bilddaten gespeichert werden!
Das speichern geschieht mit neBitmap->Save(..);Evtl. sollte du hier alles nochmal ganz in Ruhe durchlesen und nochmal in der MSDN/PSDK bei "Bitmap" und "Image" ein bisschen rumlesen sowie nochmal ein wenig in einem C++ Tutorial/Buch lesen...
hi, ja das problem was ich habe ich das kompremierte speichern, mit dem komm ich nicht ganz zurecht!;-( bi.bmiHeader.biCompression=BI_RGB; das dann speichern schaff ich auch.....aber kompremiert speichern nicht;-(

thx

-
geeky schrieb:
- Encoder-ID rausfinden, um ne *.png Datei zu erzeugen (mit dem 3. Parameter der hier NULL ist, kann man z.B. bei jpegs noch angeben welche Qualität er nehmen soll oder sonstige Encoder-Einstellungen...):
// Diese Funktion gibt es nicht! // Die Funktion steht in der MSDN/PSDK als Beispiel! // Nach 'Retrieving the Class Identifier for an Encoder' in der MSDN oder PSDK-Doku suchen! GetEncoderClsid(L"image/png", &encoderClsid);- Bild speichern:
neBitmap->Save(L"beispiel.png",&encoderClsid,NULL);Hat das nicht geklappt? Was für Fehler bekommst du?
-
nö net ganz....weil wie bekomm ich da die HDC hdc information rein???
werd morgn das ganze weiter machen....also heute mittag;-)thx

-
// Diese Funktion gibt es nicht! // Die Funktion steht in der MSDN/PSDK als Beispiel! // Nach 'Retrieving the Class Identifier for an Encoder' in der MSDN oder PSDK-Doku suchen! GetEncoderClsid(L"image/png", &encoderClsid);ich bekomm da nen fehler:
screen.cpp(191) : error C2065: 'GetEncoderClsid' : nichtdeklarierter Bezeichneris auch irgendwie klar....die funktion gibs es nicht...aber was soll man da machen?
thx

-
Das was ich in dem Kommentar dahin geschrieben hab:
Nach 'Retrieving the Class Identifier for an Encoder' in der MSDN oder PSDK-Doku suchen!
-
geeky schrieb:
Das was ich in dem Kommentar dahin geschrieben hab:
Nach 'Retrieving the Class Identifier for an Encoder' in der MSDN oder PSDK-Doku suchen!
jaja, ich hab ja keine psdk-doku runtergeladn;-(
thx

-