घर
Top.Mail.Ru Yandeks.Metrika
मंच: "मीडिया";
वर्तमान संग्रह: 2003.06.02;
डाउनलोड करें: [xml.tar.bz2];

नीचे

कैसे जल्दी से स्क्रीन पर एक चित्र प्रदर्शित करने के लिए। इसी तरह की शाखाएँ खोजें


Suharew   (2003-02-16 00:53) [0]

इमेज है। मैं लोडफ्रॉमफाइल करता हूं, लेकिन यह बहुत धीमा है। मेरा ACDSee जैसा कार्यक्रम है। 10 मिनी चित्र प्रदर्शित किए गए हैं, अर्थात् मैं छवि में एक चित्र अपलोड करता हूं, छवि का आकार 50x50 है। 10 तस्वीरें लगभग 5 सेकंड के लिए भरी हुई हैं। और ACDSee में बहुत तेज है। बताइए कैसा होना है।



Kirill Kirsanov   (2003-02-16 10:53) [1]

Те-же проблемы, долько картинки у меня базе лежат, и их загрузка тормозится еще и процессом Выборки из базы.



Mihey   (2003-02-16 17:51) [2]

Да уж, с Image тормозня. Но ты не уточнил главного - эти картинки выбирает пользователь или это уже заданные параметры и их главное - загрузить???

Я полагаю у тебя второй случай и картинки нужны для оформления каких-либо целей. Суть втом, чтобы отказаться от TImage и использовать простой TBitMap. При этом суть такова - надо сначала загрузить картинки, например, при создании формы, а потом уже отображать их чем-нибудь скоростным, например BitBlt.



Mirovodin   (2003-02-16 17:54) [3]

Нужно использовать ТОЛЬКО API функции. Т.е. для загрузки изображения только BlockRead, а для вывода Bitblt.



Suharew   (2003-02-17 19:10) [4]

Ну ладно я прочитал файл а как его теперь вывести с помощью BitBlt Если есть примерчик, подкиньте



Mihey   (2003-02-17 21:37) [5]

करें:

function BitBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc: Integer; Rop: Longint): Bool;

DestDC

Контекст устpойства, пpинимающего каpту бит. Имеется ввиду контекст (handle) канвы (canvas), на которую копируется изображение. Например, если изображение выводится на форму, то указывается контекст канвы формы, а именно: Form.Canvas.Handle. Для изображений TBitMap аналогично: BitMap.Canvas.Handle, но никак не BitMap.Handle.

एक्स, वाई

Координаты верхнего левого угла прямоугольной области, в которую выводится изображение. Проще говоря, координаты изображения.

Width, Height

Ширина и высота прямоугольной области, в которую выводится изображение. Если хотите вывести изображение целиком, то указывайте его настоящие размеры (постоянные или определённые по свойствам Width и Height). Вообще, X, Y, Width, Height вместе похожи на структуру TRect, которая используется в определении той же области вывода изображения в функции Draw объекта TCanvas.

SrcDC

Контекст устpойства, из котоpого копиpуется каpта бит, или нуль для pастpовой опеpации только на DestDC. Здесь, аналогично DestDC, указывается Handle объекта TCanvas изображения, которое будет скопировано на (именно "на", а не "в", т.к. речь идёт о копировании по битам) DestDC. В то же время, вы можете указать в этом параметре нуль, и на DestDC в зависимости от растровой операции (см. ниже) выведется прямоугольная область указанных в параметрах Width и Height размеров.

XSrc, YSrc

Веpхний левый угол SrcDC. Поясняю: прямоугольник размера Width и Height с координатами XSrc и YSrc будет копироваться из SrcDC в DestDC, причём в прямоугольник тех же размеров с координатами X и Y. Значит, если вы хотите просто вывести изображение, то указывайте здесь нули (XSrc = 0 и YSrc = 0). Если у вас большое изображение, и на на DestDC вы хотите вывести только его часть, то воспользуйтесь свойствами XSrc, YScr и Width, Height, и определите, какую именно. Если SrcDC = 0, то и XSrc = 0, YSrc = 0.

Rop

Одна из констант теpнаpных pастpовых опеpаций: Blackness, DSTInvert, MergeCopy, MergePaint, NotSrcCopy, NotSrcErase, PatCopy, PatInvert, PatPaint, SrcAnd, SrcCopy, SrcErase, SrcInvert, SrcPaint, Whiteness. Этот параметр отвечает за то, как SrcDC будет спроецировано DestDC. SrcCopy выполняет пpостое копиpование из источника в назначение.



Mihey   (2003-02-17 21:40) [6]

Ну и примерчик:

...
var Pic: TBitMap;
...
Pic := TBitMap.Create;
Pic.LoadFromFile("SomeFile.bmp");
...
BitBlt(MyForm.Canvas.Handle,
0, 0, Pic.Width, Pic.Height,
Pic.Canvas.Handle, 0, 0, SRCCOPY);
...



Suharew   (2003-02-17 22:24) [7]

Да, это с bmp только, а как насчет jpg.
С бмпешками я знал.



Mihey   (2003-02-17 23:20) [8]

इसलिए:

प्रक्रिया TForm1.Button1 क्लिक करें (प्रेषक: TObject);
था
jp: TJpegImage; //Незабудь про модуль "jpeg" в "uses".
Pic: TBitMap;
शुरू करना
jp: = TJpegImage.Create;
Pic := TBitMap.Create;
jp.LoadFromFile("C:\logo.jpg");
Pic.Assign(jp);
jp.Free;
BitBlt(Canvas.Handle, 0, 0, Pic.Width, Pic.Height, Pic.Canvas.Handle, 0, 0, SrcCopy);
अंत;



Suharew   (2003-02-18 11:25) [9]

धन्यवाद.
Конечно быстрее, но все равно недостаточно, или у меня слишком большие требования, но ACDSee как то сделало.



Mirovodin   (2003-02-18 11:57) [10]

Если нужно работать именно в Jpeg хорошая связка FastDib + Intel JPEG Library.



Владимир Васильев   (2003-02-18 12:59) [11]

>Mirovodin - отличное решение, но , с недавнего времени , к сожалению, платное - это я о ijl**.dll



पन्ने: 1 पूरी शाखा

मंच: "मीडिया";
वर्तमान संग्रह: 2003.06.02;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.58 एमबी
समय: 0.035 c
14-3134
जैक्सन
2003-05-07 21:51
2003.06.02
TestTypes! कहां से प्राप्त करें?


11-2833
antonioxxx
2002-09-04 18:36
2003.06.02
चिह्न और लेबल के बारे में प्रश्न।


14-3100
माउस
2003-05-13 17:51
2003.06.02
खूंटी का लड़का?


1-2970
Azbul
2003-05-21 10:26
2003.06.02
एक फ़ाइल के लिए एक हेक्स मान लिखना


14-3162
दिमित्री हे।
2003-05-15 13:01
2003.06.02
युवा प्रोग्रामर (इंटरनेट में) कहां जाएं।





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский