500分求如何将两个高度相同的jpeg连接在一起 实在不会做了,盼高人指点,另请教如何往图片中写一些文字比如日期什么的???愿千分散尽,只求工作如意! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将文件调入DC中,写什么都可以的,之后把这个DC存起来就可以啦。 楼上的大侠,怎么把这个DC存起来,可否给把CODE写出来?谢谢拉 老大在搞什么啊,-_-用GDI+VOID Example_GetPixel(HDC hdc){ Graphics graphics(hdc); // Create a Bitmap object from a JPEG file. Bitmap myBitmap1(L"Climber.jpg"); Bitmap myBitmap2(L"Climber.jpg"); // Get the value of pixels from myBitmap1,myBitmap2. Color pixelColor1; for(int i=0;i<myBitmap1.GetWidth();i++) for(int j=0;j<myBitmap1.GetHeight();j++) myBitmap1.GetPixel(i, j, &pixelColor1); for(i=0;i<myBitmap2.GetWidth();i++) for(int j=0;j<myBitmap2.GetHeight();j++) myBitmap1.GetPixel(i, j, &pixelColor2); //save the pixelColor1,pixelColor2 to new Image Bitmap* newImage; for(i =0;i<myBitmap1.GetWidth()+myBitmap2.GetWidth();i++) for(j=0;j<myBitmap1.GetHeight()+myBitmap2.GetHeight();j++) { if(i<myBitmap1.GetWidth()) newImage->SetPixel(i,j,pixelColor1); else newImage->SetPixel(i,j,pixelColor2); } //save image... } 你会保存位图吧。新建一个BITMAP和你的位图一样大小的。把位图数据COPY到BITMAP,画好后把其COPY到位图数据区,然后保存位图就可以了。想在BITMAP上写什么用MEMDC写好了。 该问题作者已用GDI+解决,感谢关注!#include <windows.h>#include <gdiplus.h>#include <stdio.h>using namespace Gdiplus;INT GetEncoderClsid(const WCHAR* format, CLSID* pClsid); // helper functionINT main(){ // Initialize GDI+. GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); EncoderParameters encoderParameters; ULONG parameterValue; Status stat; // An EncoderParameters object has an array of // EncoderParameter objects. In this case, there is only // one EncoderParameter object in the array. encoderParameters.Count = 1; // Initialize the one EncoderParameter object. encoderParameters.Parameter[0].Guid = EncoderSaveFlag; encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues = 1; encoderParameters.Parameter[0].Value = ¶meterValue; // Get the CLSID of the TIFF encoder. CLSID encoderClsid; GetEncoderClsid(L"image/tiff", &encoderClsid); // Create four image objects. Image* multi = new Image(L"Shapes.bmp"); Image* page2 = new Image(L"Cereal.gif"); Image* page3 = new Image(L"Iron.jpg"); Image* page4 = new Image(L"House.png"); // Save the first page (frame). parameterValue = EncoderValueMultiFrame; stat = multi->Save(L"MultiFrame.tif", &encoderClsid, &encoderParameters); if(stat == Ok) printf("Page 1 saved successfully.\n"); // Save the second page (frame). parameterValue = EncoderValueFrameDimensionPage; stat = multi->SaveAdd(page2, &encoderParameters); if(stat == Ok) printf("Page 2 saved successfully.\n"); // Save the third page (frame). parameterValue = EncoderValueFrameDimensionPage; stat = multi->SaveAdd(page3, &encoderParameters); if(stat == Ok) printf("Page 3 saved successfully.\n"); // Save the fourth page (frame). parameterValue = EncoderValueFrameDimensionPage; stat = multi->SaveAdd(page4, &encoderParameters); if(stat == Ok) printf("Page 4 saved successfully.\n"); // Close the multiframe file. parameterValue = EncoderValueFlush; stat = multi->SaveAdd(&encoderParameters); if(stat == Ok) printf("File closed successfully.\n"); delete multi; delete page2; delete page3; delete page4; GdiplusShutdown(gdiplusToken); return 0;} C++控制台产生Win32窗口 简单的关于析构的问题 如何把下面代码实现的功能封装在一个my{}中,并放进 dll里,那winmain 怎么处理?? 如何解决在图片上画线的闪烁问题 vc console程序中是否能调用WIN32的API函数呢? 为啥俺的AcitveX控件是dll的? <求助>请问如何隐藏属性页中的按妞~~~~~~~~~~~~~~在线等 请教Win32下使用ActiveX控件开发 如何修改文档图标? 关于m_sttFilter出错,,SOS! TransparentBlt的问题? dll的引用计数(reference count)可以读取吗?如何读取?
谢谢拉
用GDI+
VOID Example_GetPixel(HDC hdc){ Graphics graphics(hdc); // Create a Bitmap object from a JPEG file.
Bitmap myBitmap1(L"Climber.jpg");
Bitmap myBitmap2(L"Climber.jpg");
// Get the value of pixels from myBitmap1,myBitmap2.
Color pixelColor1;
for(int i=0;i<myBitmap1.GetWidth();i++)
for(int j=0;j<myBitmap1.GetHeight();j++)
myBitmap1.GetPixel(i, j, &pixelColor1); for(i=0;i<myBitmap2.GetWidth();i++)
for(int j=0;j<myBitmap2.GetHeight();j++)
myBitmap1.GetPixel(i, j, &pixelColor2); //save the pixelColor1,pixelColor2 to new Image
Bitmap* newImage;
for(i =0;i<myBitmap1.GetWidth()+myBitmap2.GetWidth();i++)
for(j=0;j<myBitmap1.GetHeight()+myBitmap2.GetHeight();j++)
{
if(i<myBitmap1.GetWidth())
newImage->SetPixel(i,j,pixelColor1);
else
newImage->SetPixel(i,j,pixelColor2);
}
//save image...
}
和你的位图一样大小的。
把位图数据COPY到BITMAP,画好后把其COPY到位图数据区,然后保存位图就可以了。
想在BITMAP上写什么用MEMDC写好了。
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;INT GetEncoderClsid(const WCHAR* format, CLSID* pClsid); // helper functionINT main()
{
// Initialize GDI+.
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); EncoderParameters encoderParameters;
ULONG parameterValue;
Status stat; // An EncoderParameters object has an array of
// EncoderParameter objects. In this case, there is only
// one EncoderParameter object in the array.
encoderParameters.Count = 1; // Initialize the one EncoderParameter object.
encoderParameters.Parameter[0].Guid = EncoderSaveFlag;
encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong;
encoderParameters.Parameter[0].NumberOfValues = 1;
encoderParameters.Parameter[0].Value = ¶meterValue; // Get the CLSID of the TIFF encoder.
CLSID encoderClsid;
GetEncoderClsid(L"image/tiff", &encoderClsid); // Create four image objects.
Image* multi = new Image(L"Shapes.bmp");
Image* page2 = new Image(L"Cereal.gif");
Image* page3 = new Image(L"Iron.jpg");
Image* page4 = new Image(L"House.png"); // Save the first page (frame).
parameterValue = EncoderValueMultiFrame;
stat = multi->Save(L"MultiFrame.tif", &encoderClsid, &encoderParameters);
if(stat == Ok)
printf("Page 1 saved successfully.\n"); // Save the second page (frame).
parameterValue = EncoderValueFrameDimensionPage;
stat = multi->SaveAdd(page2, &encoderParameters);
if(stat == Ok)
printf("Page 2 saved successfully.\n"); // Save the third page (frame).
parameterValue = EncoderValueFrameDimensionPage;
stat = multi->SaveAdd(page3, &encoderParameters);
if(stat == Ok)
printf("Page 3 saved successfully.\n"); // Save the fourth page (frame).
parameterValue = EncoderValueFrameDimensionPage;
stat = multi->SaveAdd(page4, &encoderParameters);
if(stat == Ok)
printf("Page 4 saved successfully.\n"); // Close the multiframe file.
parameterValue = EncoderValueFlush;
stat = multi->SaveAdd(&encoderParameters);
if(stat == Ok)
printf("File closed successfully.\n"); delete multi;
delete page2;
delete page3;
delete page4;
GdiplusShutdown(gdiplusToken);
return 0;
}