Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 31 из 116<  1 ... 28  29  30  31  32  33  34 ... 116  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Lord_of_Darkness
Цитата:
может есть что-нибудь подобное для проведения линии?

Нет, если хочется быстро , то советую использовать DirectDraw. Полный API DirectX9 под Delphi есть на сайте http://clootie.narod.ru



Партнер
 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 21.11.2003
Откуда: Краснодар
Ура !! Работает!

_________________
http://people.overclockers.ru/diler


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Ray Adams пасиб, но слишком много гемора в моем случае :(

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
А что, стандратной скорости не хватает чтоли?


 

Member
Статус: Не в сети
Регистрация: 30.01.2003
Откуда: Москва
Lord_of_Darkness Ну если много линий надо - то PolyLine...


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Ray Adams У меня линия мигает при отрисовке :( (это стрелка на фотке шкалы прибора)
Asteroid
Цитата:
Ну если много линий надо - то PolyLine...
Да не, одной бы вполне хватило ;)

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 30.01.2003
Откуда: Москва
DoubleBuffered := true ?
Отрисовка белой линии - или заранее сохраненного фона - чтобы затереть старую линию помогает?


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Lord_of_Darkness Рисуеш не правильно. Вот смори как я обычно делаю
1. Использую TPaintBox
2. Рисую всегда в TBitmap в памяти
3. Копирую полностью отрисованный битмап из памяти в канвас paintbox
4. никогда моргать не будет :)
Пример тому Monitoring Graphs в ATI Tray Tools. Рисуется точно так как я описал выше.


 

Member
Статус: Не в сети
Регистрация: 30.01.2003
Откуда: Москва
Ray Adams :) Только еще придется OnPaint обрабатывать - а то картинка на TPaintBox затирается неловким движением руки :)


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Ray Adams
Хм, попробуем..
Asteroid
Цитата:
Только еще придется OnPaint обрабатывать
ну енто ессно.

Добавлено спустя 36 минут, 39 секунд:
Мигает всеравно-о-о!!!
Код:
   PatBlt(SouBitmap.Canvas.Handle, 0, 0, Form1.ClientWidth, Form1.ClientHeight, WHITENESS);
   SouBitmap.Canvas.MoveTo(180,230);
   SouBitmap.Canvas.LineTo(ArrPos,40);
   PaintBox1.Canvas.CopyRect(Rect,SouBitmap.Canvas,Rect);

Что-то не так???
ЗЫ Это все запихано в таймер 100мсек

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 23.09.2004
Откуда: Казань
Кто-нибудь ставил Delphi 2005. Че-то он глючит или я не так работаю? Даже Virtual TreeView не ставится (а должен).
Мне так понравилась новая дельфя своими рюшечками :) .

_________________
(с) 2006, NecroSoft


 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
Есть следующий код снимка экрана и сохранение его в файл
Код:
var
  DC: HDC;
  Canva: TCanvas;
  B: TBitmap;
begin
  Canva := TCanvas.Create;
  B := TBitmap.Create;
  DC := GetDC(0);
  try
    Canva.Handle := DC;
    with Screen do
    begin
      B.Width := Width;
      B.Height := Height;
      B.Canvas.CopyRect(Rect(0, 0, Width, Height),
      Canva, Rect(0, 0, Width, Height));
      B.SaveToFile('c:\Мои документы\screentofile.bmp');
    end
  finally
    ReleaseDC(0, DC);
    B.Free;
    Canva.Free
  end
end;

как можно уменьшить размер скриншота? Независимо от расширения сохраняется скриншот размеров 1.85Mb :(

_________________
Подставлю ладони - их болью своей наполни,
Наполни печалью, страхом гулкой темноты...


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Lord_of_Darkness Мдя уж. Щас через 5 минут будет тебе пример

Добавлено спустя 10 минут, 26 секунд:
Лови и заметь, что основная прорисовка идет не в обработчике метода OnPaint , там вообще не обрабатывается ничего. Рисование происходит в отдельной процедуре и таймер вызывает ее.
Создай форму, брось на нее TPaintBox, и TTimer, обработчик рисования у таймера.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    b:TBitmap;
    curX:longint;
    procedure DoPaint;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
     b:=TBitmap.Create;
     b.Width:=Paintbox1.Width;
     b.Height:=Paintbox1.Height;
     b.PixelFormat:=pf32bit;
     curX:=0;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     b.Free;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
     curX:=curX+1;
     if curX>PaintBox1.Width then curX:=0;
     DoPaint;
end;

procedure TForm1.DoPaint;
begin
     {}
     b.Canvas.Brush.Color:=clBlack;
     b.Canvas.FillRect(rect(0,0,b.Width,b.Height));
     b.Canvas.Pen.Color:=clWhite;
     b.Canvas.MoveTo(curX,0);
     b.Canvas.LineTo(curX,PaintBox1.Height);
     PaintBox1.Canvas.Draw(0,0,b);

end;

end.


Добавлено спустя 6 минут, 4 секунды:
Хотя для сохранения отрисованого , когда таймер не активен, всеже в OnPaint надо добавить вызов DoPaint.


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Ray Adams
А, так все из-за таймера! Сэнкс!

Добавлено спустя 1 час, 34 минуты, 8 секунд:
ANTIHacker
Преобразовать в jpeg
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

uses JPEG;

procedure TForm1.Button1Click(Sender: TObject);
var
JPEG: TJPEGImage;
Bitmap: TBitmap;
begin
JPEG := TJPEGImage.Create;
Bitmap := TBitmap.Create;
try
Bitmap.LoadFromFile('C:\Program Files\Common Files\alarm.bmp');
JPEG.Assign(Bitmap);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
Bitmap.Free;
end;
end;

end.


изменить степень сжатия
Код:
JpegIm.CompressionQuality := 20;
JpegIm.Compress;

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
ANTIHacker
Цитата:
как можно уменьшить размер скриншота? Независимо от расширения сохраняется скриншот размеров 1.85Mb
Гы :-) Ну ты дал, думаешь Делфовые процедуры сами его конвертировать будут в другой формат :-) Можешь попробовать использовать нечто типа этого
Код:
var
  DC: HDC;
  Canva: TCanvas;
  B: TBitmap;
  JPG: TJPEGImage
begin
  Canva := TCanvas.Create;
  B := TBitmap.Create;
  DC := GetDC(0);
  try
    Canva.Handle := DC;
    with Screen do
    begin
      B.Width := Width;
      B.Height := Height;
      B.Canvas.CopyRect(Rect(0, 0, Width, Height),
      Canva, Rect(0, 0, Width, Height));
      JPG.Assign(B);
      JPG.CompressionQuality := 95;
      JPG.SaveToFile('c:\Мои документы\screentofile.jpg');
    end
  finally
    ReleaseDC(0, DC);
    B.Free;
    Canva.Free
  end
end;

Это модифицированый твой, работает или нет - незнаю :-) Незабудь дописать в uses - jpeg.
Lord_of_Darkness еще бы, таймер-то аж раз в 100(!!!) мсек обновляеться.
Лучше зделать так:
В классе формы дописать:
Код:
  protected
    procedure WMPaint(var Msg: TWMPaint); message WM_PAINT;

И рисовать в процедуре WMPaint, и никаких таймеров ненадо и мигать не будет :-)

_________________
Ку ку


 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
Daemon
Цитата:
Гы Ну ты дал, думаешь Делфовые процедуры сами его конвертировать будут в другой формат Можешь попробовать использовать нечто типа этого

:D
OK, спасибо :) .

_________________
Подставлю ладони - их болью своей наполни,
Наполни печалью, страхом гулкой темноты...


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Daemon Да не, уже все более-менее сносно заработало
Ray Adams :beer:

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 21.11.2003
Откуда: Краснодар
Народ помогите , не могу разобраться с высокостными годами вот собств ,что написал
Цитата:
begin
year:=strtoint(edit27.Text);
q:=(year mod 4);
q1:=(year mod 100);
q3:=(q+q1+q2);
q2:=(year mod 400);
if q3=0 then
begin
edit28.text:=('в этом году 366 дней');
checkbox5.Checked:=true;
end;
if q3>0 then
begin
edit28.Text:=('в этом году 365 дней');
checkbox6.Checked:=true;
end;
end;

Ну что-то вычислять правильно год не хочет.
P.S
Каждый год,номер которого делится на 4,является высокостным,за исключением тех,которые делятся на 100 и не делятся на 400
Т.е я так понял надо ,проверять чтоб деление происходило без остатка?

_________________
http://people.overclockers.ru/diler


 

Member
Статус: Не в сети
Регистрация: 30.01.2003
Откуда: Москва
Diler Как-то странно написано, тем более, что q2 стоит после q3, где ты его используешь %) Должен быть хотя бы warning 'q2 may not be initialized'. А вообще...
Код:
var q: Boolean;
q := ( (year mod 4) = 0 ) and ( ( (year mod 100) <> 0 ) or ( (year mod 400) = 0 ) );
if q then // високосный
else //не високосный


 

Member
Статус: Не в сети
Регистрация: 11.11.2004
Откуда: Челябинск
Diler Может я конечно не в тему, но в Билдере есть такая функция (и в Дельфях должна быть):
Цитата:
Indicates whether a specified year is a leap year.

Unit

SysUtils

Category

date/time routines
extern PACKAGE bool __fastcall IsLeapYear(Word Year);

Description

Call IsLeapYear to determine whether the year specified by the Year parameter is a leap year. Year specifies the calendar year.

Use YearOf to obtain the value of Year for IsLeapYear from a TDateTime object.


All
Требуется создавать набор дочерних компонент (как Series у Chart), чтобы отображались в ObjectTreeview, сохранялись и читались из DFM. Как сделать? Хотя бы в Дельфи.

_________________
пишу я программу... и вдруг на клавиатуру выползает bug, буквально


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 31 из 116<  1 ... 28  29  30  31  32  33  34 ... 116  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan